forked from Mirrorlandia_minetest/minetest
Add vector.in_area()
utility function (#13390)
This commit is contained in:
parent
2fc7eb3ea2
commit
68f81ace97
@ -462,4 +462,11 @@ describe("vector", function()
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
it("in_area()", function()
|
||||
assert.True(vector.in_area(vector.zero(), vector.new(-10, -10, -10), vector.new(10, 10, 10)))
|
||||
assert.True(vector.in_area(vector.new(-2, 5, -8), vector.new(-10, -10, -10), vector.new(10, 10, 10)))
|
||||
assert.True(vector.in_area(vector.new(-10, -10, -10), vector.new(-10, -10, -10), vector.new(10, 10, 10)))
|
||||
assert.False(vector.in_area(vector.new(-10, -10, -10), vector.new(10, 10, 10), vector.new(-11, -10, -10)))
|
||||
end)
|
||||
end)
|
||||
|
@ -369,6 +369,12 @@ function vector.dir_to_rotation(forward, up)
|
||||
return rot
|
||||
end
|
||||
|
||||
function vector.in_area(pos, min, max)
|
||||
return (pos.x >= min.x) and (pos.x <= max.x) and
|
||||
(pos.y >= min.y) and (pos.y <= max.y) and
|
||||
(pos.z >= min.z) and (pos.z <= max.z)
|
||||
end
|
||||
|
||||
if rawget(_G, "core") and core.set_read_vector and core.set_push_vector then
|
||||
local function read_vector(v)
|
||||
return v.x, v.y, v.z
|
||||
|
@ -3540,6 +3540,11 @@ vectors are written like this: `(x, y, z)`:
|
||||
* Returns a boolean value indicating whether `v` is a real vector, eg. created
|
||||
by a `vector.*` function.
|
||||
* Returns `false` for anything else, including tables like `{x=3,y=1,z=4}`.
|
||||
* `vector.in_area(pos, min, max)`:
|
||||
* Returns a boolean value indicating if `pos` is inside area formed by `min` and `max`.
|
||||
* `min` and `max` are inclusive.
|
||||
* If `min` is bigger than `max` on some axis, function always returns false.
|
||||
* You can use `vector.sort` if you have two vectors and don't know which are the minimum and the maximum.
|
||||
|
||||
For the following functions `x` can be either a vector or a number:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user