diff options
author | sfan5 <sfan5@live.de> | 2020-04-14 14:11:33 +0200 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2020-04-27 20:45:46 +0200 |
commit | 3475759d1adbd4a64c6250fd87981f783e64f69c (patch) | |
tree | 50e1a4402a2ecc83b6f11a76ff27c7b5b3ac59ad /src/script/cpp_api | |
parent | aef59f2ad9a5a5a217ddadc05c46fd4d23cef47f (diff) | |
download | minetest-3475759d1adbd4a64c6250fd87981f783e64f69c.tar.gz minetest-3475759d1adbd4a64c6250fd87981f783e64f69c.tar.bz2 minetest-3475759d1adbd4a64c6250fd87981f783e64f69c.zip |
Expose collision information to LuaEntity on_step
Diffstat (limited to 'src/script/cpp_api')
-rw-r--r-- | src/script/cpp_api/s_entity.cpp | 12 | ||||
-rw-r--r-- | src/script/cpp_api/s_entity.h | 4 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/script/cpp_api/s_entity.cpp b/src/script/cpp_api/s_entity.cpp index 26c7e8cd4..ea9320051 100644 --- a/src/script/cpp_api/s_entity.cpp +++ b/src/script/cpp_api/s_entity.cpp @@ -178,12 +178,11 @@ void ScriptApiEntity::luaentity_GetProperties(u16 id, lua_pop(L, 1); } -void ScriptApiEntity::luaentity_Step(u16 id, float dtime) +void ScriptApiEntity::luaentity_Step(u16 id, float dtime, + const collisionMoveResult *moveresult) { SCRIPTAPI_PRECHECKHEADER - //infostream<<"scriptapi_luaentity_step: id="<<id<<std::endl; - int error_handler = PUSH_ERROR_HANDLER(L); // Get core.luaentities[id] @@ -199,9 +198,14 @@ void ScriptApiEntity::luaentity_Step(u16 id, float dtime) luaL_checktype(L, -1, LUA_TFUNCTION); lua_pushvalue(L, object); // self lua_pushnumber(L, dtime); // dtime + /* moveresult */ + if (moveresult) + push_collision_move_result(L, *moveresult); + else + lua_pushnil(L); setOriginFromTable(object); - PCALL_RES(lua_pcall(L, 2, 0, error_handler)); + PCALL_RES(lua_pcall(L, 3, 0, error_handler)); lua_pop(L, 2); // Pop object and error handler } diff --git a/src/script/cpp_api/s_entity.h b/src/script/cpp_api/s_entity.h index cc08c46e8..b5f7a6586 100644 --- a/src/script/cpp_api/s_entity.h +++ b/src/script/cpp_api/s_entity.h @@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc., struct ObjectProperties; struct ToolCapabilities; +struct collisionMoveResult; class ScriptApiEntity : virtual public ScriptApiBase @@ -36,7 +37,8 @@ public: std::string luaentity_GetStaticdata(u16 id); void luaentity_GetProperties(u16 id, ServerActiveObject *self, ObjectProperties *prop); - void luaentity_Step(u16 id, float dtime); + void luaentity_Step(u16 id, float dtime, + const collisionMoveResult *moveresult); bool luaentity_Punch(u16 id, ServerActiveObject *puncher, float time_from_last_punch, const ToolCapabilities *toolcap, v3f dir, s16 damage); |