aboutsummaryrefslogtreecommitdiff
path: root/builtin/common
diff options
context:
space:
mode:
Diffstat (limited to 'builtin/common')
-rw-r--r--builtin/common/tests/vector_spec.lua7
-rw-r--r--builtin/common/vector.lua6
2 files changed, 13 insertions, 0 deletions
diff --git a/builtin/common/tests/vector_spec.lua b/builtin/common/tests/vector_spec.lua
index a738e068f..67dbd2d6b 100644
--- a/builtin/common/tests/vector_spec.lua
+++ b/builtin/common/tests/vector_spec.lua
@@ -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)
diff --git a/builtin/common/vector.lua b/builtin/common/vector.lua
index 5ea527708..e2008a9d7 100644
--- a/builtin/common/vector.lua
+++ b/builtin/common/vector.lua
@@ -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