From c9a9b3c9d0d4fed0b02d9935923bfd7dcbc45d1e Mon Sep 17 00:00:00 2001 From: Mattes D Date: Tue, 14 Apr 2020 16:43:21 +0200 Subject: Bindings: Allow coercion between Vector3 subtypes. (#4646) In manually bound functions, allows one to use any Vector3 value, as well as a {x, y, z} table, in Lua as any Vector3 parameter. Has example in Debuggers' /vector command. Unfortunately doesn't work in auto-bindings. --- Server/Plugins/Debuggers/Debuggers.lua | 20 ++++++++++++++++++++ Server/Plugins/Debuggers/Info.lua | 8 ++++++++ 2 files changed, 28 insertions(+) (limited to 'Server/Plugins') diff --git a/Server/Plugins/Debuggers/Debuggers.lua b/Server/Plugins/Debuggers/Debuggers.lua index 1505904a8..657599b84 100644 --- a/Server/Plugins/Debuggers/Debuggers.lua +++ b/Server/Plugins/Debuggers/Debuggers.lua @@ -1727,6 +1727,26 @@ end +function HandleVectorCmd(a_Split, a_Player) + a_Player:SendMessage("Testing the Vector3 APIs...") + + -- Test the Vector3 coercion in ManualBindings - any Vector3 type should be accepted for any Vector3 parameter: + local pos = a_Player:GetPosition() + local c = cCuboid:new() + c:Assign(pos - Vector3d(2, 2, 2), pos + Vector3d(2, 2, 2)) + assert(c:IsInside(Vector3d(pos))) + assert(c:IsInside(Vector3f(pos))) + assert(c:IsInside(Vector3i(pos))) + assert(c:IsInside({pos.x, pos.y, pos.z})) + + a_Player:SendMessage("Test successful.") + return true +end + + + + + function HandleWESel(a_Split, a_Player) -- Check if the selection is a cuboid: local IsCuboid = cPluginManager:CallPlugin("WorldEdit", "IsPlayerSelectionCuboid") diff --git a/Server/Plugins/Debuggers/Info.lua b/Server/Plugins/Debuggers/Info.lua index 734b27e97..6fbd90e58 100644 --- a/Server/Plugins/Debuggers/Info.lua +++ b/Server/Plugins/Debuggers/Info.lua @@ -260,6 +260,14 @@ g_PluginInfo = Handler = HandleTestWndCmd, HelpString = "Opens up a window using plugin API" }, + + ["/vector"] = + { + Permission = "debuggers", + Handler = HandleVectorCmd, + HelpString = "Tests the Vector3 API", + }, + ["/wesel"] = { Permission = "debuggers", -- cgit v1.2.3