diff options
author | hecks <42101236+hecktest@users.noreply.github.com> | 2021-01-02 15:14:29 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-02 15:14:29 +0100 |
commit | dd5a732fa90550066bb96305b64b6648903cc822 (patch) | |
tree | 1d39d1362e7619ff459eb6da5f1c9aab7629d1b6 /src/server/luaentity_sao.cpp | |
parent | ad58fb22064c7db223cb825596c12f93f2a75a26 (diff) | |
download | minetest-dd5a732fa90550066bb96305b64b6648903cc822.tar.gz minetest-dd5a732fa90550066bb96305b64b6648903cc822.tar.bz2 minetest-dd5a732fa90550066bb96305b64b6648903cc822.zip |
Add on_deactivate callback for luaentities (#10723)
Diffstat (limited to 'src/server/luaentity_sao.cpp')
-rw-r--r-- | src/server/luaentity_sao.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/server/luaentity_sao.cpp b/src/server/luaentity_sao.cpp index b39797531..c7277491a 100644 --- a/src/server/luaentity_sao.cpp +++ b/src/server/luaentity_sao.cpp @@ -112,6 +112,15 @@ void LuaEntitySAO::addedToEnvironment(u32 dtime_s) } } +void LuaEntitySAO::dispatchScriptDeactivate() +{ + // Ensure that this is in fact a registered entity, + // and that it isn't already gone. + // The latter also prevents this from ever being called twice. + if (m_registered && !isGone()) + m_env->getScriptIface()->luaentity_Deactivate(m_id); +} + void LuaEntitySAO::step(float dtime, bool send_recommended) { if(!m_properties_sent) @@ -302,7 +311,7 @@ u16 LuaEntitySAO::punch(v3f dir, { if (!m_registered) { // Delete unknown LuaEntities when punched - m_pending_removal = true; + markForRemoval(); return 0; } @@ -335,7 +344,7 @@ u16 LuaEntitySAO::punch(v3f dir, clearParentAttachment(); clearChildAttachments(); m_env->getScriptIface()->luaentity_on_death(m_id, puncher); - m_pending_removal = true; + markForRemoval(); } actionstream << puncher->getDescription() << " (id=" << puncher->getId() << |