From ee768f878cf39def21cfaa136ff0c3935414c198 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 11 Jul 2024 01:10:23 +0300 Subject: [PATCH] fix transform:set_pos --- res/layouts/console.xml.lua | 4 +++- res/scripts/stdcmd.lua | 10 +++++++--- src/logic/scripting/lua/lib__transform.cpp | 4 +++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/res/layouts/console.xml.lua b/res/layouts/console.xml.lua index f71920ce..7462eeee 100644 --- a/res/layouts/console.xml.lua +++ b/res/layouts/console.xml.lua @@ -2,10 +2,12 @@ history = session.get_entry("commands_history") history_pointer = #history function setup_variables() - local x,y,z = player.get_pos(hud.get_player()) + local pid = hud.get_player() + local x,y,z = player.get_pos(pid) console.set('pos.x', x) console.set('pos.y', y) console.set('pos.z', z) + console.set('entity.id', player.get_entity(pid):get_uid()) end function on_history_up() diff --git a/res/scripts/stdcmd.lua b/res/scripts/stdcmd.lua index bd7caf02..8d27e77e 100644 --- a/res/scripts/stdcmd.lua +++ b/res/scripts/stdcmd.lua @@ -106,10 +106,14 @@ console.add_command( ) console.add_command( - "tp obj:sel=$obj.id x:num~pos.x y:num~pos.y z:num~pos.z", - "Teleport object", + "tp entity:sel=$entity.id x:num~pos.x y:num~pos.y z:num~pos.z", + "Teleport entity", function (args, kwargs) - player.set_pos(unpack(args)) + local eid, x, y, z = unpack(args) + local entity = entities.get(eid) + if entity ~= nil then + entity.transform:set_pos({x, y, z}) + end end ) console.add_command( diff --git a/src/logic/scripting/lua/lib__transform.cpp b/src/logic/scripting/lua/lib__transform.cpp index cd0ae15f..c1de157c 100644 --- a/src/logic/scripting/lua/lib__transform.cpp +++ b/src/logic/scripting/lua/lib__transform.cpp @@ -9,7 +9,9 @@ static int l_transform_get_pos(lua::State* L) { static int l_transform_set_pos(lua::State* L) { if (auto entity = get_entity(L, 1)) { - entity->getTransform().setPos(lua::tovec3(L, 2)); + auto vec = lua::tovec3(L, 2); + entity->getTransform().setPos(vec); + entity->getRigidbody().hitbox.position = vec; } return 0; }