Skip to content

Commit

Permalink
Remove functions which are deprecated and which I do not recommend to…
Browse files Browse the repository at this point in the history
… use

Removing deprecated functionality can help to clean up the code a bit.

I remove the following deprecated functions and values:
* vector.zero
* vector.plane()
* vector.pos_to_string()
* vector.quickadd()
* vector.scalar()
* vector.get_data_from_pos()
* vector.set_data_to_pos()
* vector.set_data_to_pos_optional()
* vector.remove_data_from_pos()
* vector.get_data_pos_table()

Furthermore, I remove the unused, experimental vector_meta.lua file
and make luacheck linting more strict so that it can show accidental
uses of deprecated functions in the code of this mod if there are any.

This change can break compatility with old mods which use vector_extras.
  • Loading branch information
HybridDog committed Aug 27, 2024
1 parent 63edf83 commit f400a91
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 390 deletions.
10 changes: 8 additions & 2 deletions .luacheckrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
read_globals = {
-- Defined by Minetest
"minetest", "PseudoRandom", "VoxelArea", "string", "dump", "math"
"minetest", "PseudoRandom", "VoxelArea", "string", "dump", "math",
vector = {
fields = {
"add", "cross", "direction", "distance", "dot", "multiply",
"new", "normalize", "round", "subtract",
"from_number", "get_max_coord", "twoline", "threeline", "rayIter"
}
}
}
globals = {"vector", "vector_extras_functions"}
18 changes: 0 additions & 18 deletions doc.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,21 +134,3 @@ See e.g. `minetest.line_of_sight`.
* If `time` is omitted, it uses the current time.
* This function does not yet support the moon;
at night it simply returns `nil`.


## Helpers which I don't recommend to use now

* `vector.pos_to_string(pos)`: returns a string
* It is similar to `minetest.pos_to_string`; it uses a different format:
`"("..pos.x.."|"..pos.y.."|"..pos.z..")"`
* `vector.zero`
* The zero vector `{x=0, y=0, z=0}`
* `vector.quickadd(pos, [z],[y],[x])`
* Adds values to the vector components in-place


## Deprecated helpers

* `vector.plane`
* should be removed soon; it should have done the same as vector.triangle

94 changes: 1 addition & 93 deletions init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@ local path = minetest.get_modpath"vector_extras"

local funcs = {}

function funcs.pos_to_string(pos)
return "("..pos.x.."|"..pos.y.."|"..pos.z..")"
end

local r_corr = 0.25 --remove a bit more nodes (if shooting diagonal) to let it
-- look like a hole (sth like antialiasing)

Expand Down Expand Up @@ -270,81 +266,13 @@ function funcs.pnorm(v, p)
return (math.abs(v.x)^p + math.abs(v.y)^p + math.abs(v.z)^p)^(1 / p)
end

--not optimized
--local areas = {}
function funcs.plane(ps)
-- sort positions and imagine the first one (A) as vector.zero
vector.sort_positions(ps)
local pos = ps[1]
local B = vector.subtract(ps[2], pos)
local C = vector.subtract(ps[3], pos)

-- get the positions for the fors
local cube_p1 = {x=0, y=0, z=0}
local cube_p2 = {x=0, y=0, z=0}
for i in pairs(cube_p1) do
cube_p1[i] = math.min(B[i], C[i], 0)
cube_p2[i] = math.max(B[i], C[i], 0)
end
cube_p1 = vector.apply(cube_p1, math.floor)
cube_p2 = vector.apply(cube_p2, math.ceil)

local vn = vector.normalize(vector.cross(B, C))

local nAB = vector.normalize(B)
local nAC = vector.normalize(C)
local angle_BAC = math.acos(vector.dot(nAB, nAC))

local nBA = vector.multiply(nAB, -1)
local nBC = vector.normalize(vector.subtract(C, B))
local angle_ABC = math.acos(vector.dot(nBA, nBC))

for z = cube_p1.z, cube_p2.z do
for y = cube_p1.y, cube_p2.y do
for x = cube_p1.x, cube_p2.x do
local p = {x=x, y=y, z=z}
local n = -vector.dot(p, vn)/vector.dot(vn, vn)
if math.abs(n) <= 0.5 then
local ep = vector.add(p, vector.multiply(vn, n))
local nep = vector.normalize(ep)
local angle_BAep = math.acos(vector.dot(nAB, nep))
local angle_CAep = math.acos(vector.dot(nAC, nep))
local angldif = angle_BAC - (angle_BAep+angle_CAep)
if math.abs(angldif) < 0.001 then
ep = vector.subtract(ep, B)
nep = vector.normalize(ep)
local angle_ABep = math.acos(vector.dot(nBA, nep))
local angle_CBep = math.acos(vector.dot(nBC, nep))
angldif = angle_ABC - (angle_ABep+angle_CBep)
if math.abs(angldif) < 0.001 then
table.insert(ps, vector.add(pos, p))
end
end
end
end
end
end
return ps
end

function funcs.straightdelay(s, v, a)
if not a then
return s/v
end
return (math.sqrt(v*v+2*a*s)-v)/a
end

-- override vector.zero
-- builtin used not to have the vector.zero function. to keep compatibility,
-- vector.zero has to be a 0-vector and vector.zero() has to return a 0-vector
-- => we make a callable 0-vector table
if not vector.zero then
vector.zero = {x = 0, y = 0, z = 0}
else
local old_zero = vector.zero
vector.zero = setmetatable({x = 0, y = 0, z = 0}, {__call = old_zero})
end

function funcs.sun_dir(time)
if not time then
time = minetest.get_timeofday()
Expand Down Expand Up @@ -901,18 +829,6 @@ function funcs.update_minp_maxp(minp, maxp, pos)
end
end

function funcs.quickadd(pos, z,y,x)
if z then
pos.z = pos.z+z
end
if y then
pos.y = pos.y+y
end
if x then
pos.x = pos.x+x
end
end

function funcs.unpack(pos)
return pos.z, pos.y, pos.x
end
Expand Down Expand Up @@ -1021,20 +937,12 @@ function funcs.triangle(pos1, pos2, pos3)
return points, n, barycentric_coords
end


vector_extras_functions = funcs

dofile(path .. "/legacy.lua")
--dofile(minetest.get_modpath("vector_extras").."/vector_meta.lua")

vector_extras_functions = nil


for name,func in pairs(funcs) do
if vector[name] then
minetest.log("error", "[vector_extras] vector."..name..
" already exists.")
else
-- luacheck: globals vector
vector[name] = func
end
end
94 changes: 0 additions & 94 deletions legacy.lua

This file was deleted.

Loading

0 comments on commit f400a91

Please sign in to comment.