summaryrefslogtreecommitdiff
path: root/src/script/cpp_api
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2020-04-14 14:11:33 +0200
committersfan5 <sfan5@live.de>2020-04-27 20:45:46 +0200
commit3475759d1adbd4a64c6250fd87981f783e64f69c (patch)
tree50e1a4402a2ecc83b6f11a76ff27c7b5b3ac59ad /src/script/cpp_api
parentaef59f2ad9a5a5a217ddadc05c46fd4d23cef47f (diff)
downloadminetest-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.cpp12
-rw-r--r--src/script/cpp_api/s_entity.h4
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);