aboutsummaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorAFCMS <afcm.contact@gmail.com>2023-04-12 11:46:26 +0200
committerGitHub <noreply@github.com>2023-04-12 10:46:26 +0100
commit68f81ace97db0d41b4a51876870c30cebec1338c (patch)
treec2fa3119b949814f438057a29af9ff0dbcb1d780 /builtin
parent2fc7eb3ea26af60feadc182a9d469d630314665b (diff)
downloadminetest-68f81ace97db0d41b4a51876870c30cebec1338c.tar.xz
Add `vector.in_area()` utility function (#13390)
Diffstat (limited to 'builtin')
-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