From d22948f45cda6ea7825a42f2b35ed14c2dc16b7b Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sat, 29 Jun 2024 21:10:23 +0300 Subject: [PATCH] update entity.spawn(...): now returns an Entity instead of id --- res/content/base/scripts/drop.lua | 1 + res/content/base/scripts/hud.lua | 8 ++++---- src/logic/scripting/lua/libentity.cpp | 4 ++-- src/logic/scripting/scripting.cpp | 1 + 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/res/content/base/scripts/drop.lua b/res/content/base/scripts/drop.lua index 4b09fc3b..ae61f963 100644 --- a/res/content/base/scripts/drop.lua +++ b/res/content/base/scripts/drop.lua @@ -4,4 +4,5 @@ end function on_grounded() entity.transform:set_rot(mat4.rotate({0, 1, 0}, math.random()*360)) + entity:despawn() end diff --git a/res/content/base/scripts/hud.lua b/res/content/base/scripts/hud.lua index 069ae7de..26083c49 100644 --- a/res/content/base/scripts/hud.lua +++ b/res/content/base/scripts/hud.lua @@ -6,11 +6,11 @@ function on_hud_open() local pid = hud.get_player() local pvel = {player.get_vel(pid)} local ppos = vec3.add({player.get_pos(pid)}, {0, 0.7, 0}) - local eid = entity.spawn("base:drop", ppos) local throw_force = vec3.mul(player.get_dir(pid), DROP_FORCE) - __rigidbody.set_vel(eid, vec3.add(throw_force, vec3.add(pvel, DROP_INIT_VEL))) - __transform.set_rot(eid, - mat4.rotate(mat4.rotate(mat4.rotate({0, 1, 0}, math.random() * 360), + + local drop = entity.spawn("base:drop", ppos) + drop.rigidbody:set_vel(vec3.add(throw_force, vec3.add(pvel, DROP_INIT_VEL))) + drop.transform:set_rot(mat4.rotate(mat4.rotate(mat4.rotate({0, 1, 0}, math.random() * 360), {1, 0, 0}, math.random() * 360), {0, 0, 1}, math.random() * 360)) end) end diff --git a/src/logic/scripting/lua/libentity.cpp b/src/logic/scripting/lua/libentity.cpp index 42cc01fb..326e4da7 100644 --- a/src/logic/scripting/lua/libentity.cpp +++ b/src/logic/scripting/lua/libentity.cpp @@ -31,8 +31,8 @@ static int l_spawn(lua::State* L) { auto defname = lua::tostring(L, 1); auto& def = content->entities.require(defname); auto pos = lua::tovec3(L, 2); - auto id = level->entities->spawn(def, pos); - return lua::pushinteger(L, id); + level->entities->spawn(def, pos); + return 1; } static int l_despawn(lua::State* L) { diff --git a/src/logic/scripting/scripting.cpp b/src/logic/scripting/scripting.cpp index b33e1162..2925a553 100644 --- a/src/logic/scripting/scripting.cpp +++ b/src/logic/scripting/scripting.cpp @@ -271,6 +271,7 @@ scriptenv scripting::on_entity_spawn(const EntityDef& def, entityid_t eid, entit lua::pushenv(L, *entityenv); funcsset.on_grounded = lua::hasfield(L, "on_grounded"); funcsset.on_despawn = lua::hasfield(L, "on_despawn"); + lua::pop(L, 2); return entityenv; }