diff options
author | Lars Müller <34514239+appgurueu@users.noreply.github.com> | 2022-06-11 20:01:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-11 20:01:14 +0200 |
commit | e7d4ec6834282402c24fe432e0dcebe78b7fcd01 (patch) | |
tree | 5ccd0bb17b5eba3dc48b8954c07c296c6a64437d /src/server | |
parent | f4a53f7ee6fb5482f8193353c35be54b40533d6f (diff) | |
download | minetest-e7d4ec6834282402c24fe432e0dcebe78b7fcd01.tar.gz minetest-e7d4ec6834282402c24fe432e0dcebe78b7fcd01.tar.bz2 minetest-e7d4ec6834282402c24fe432e0dcebe78b7fcd01.zip |
on_deactivate: distinguish removal and unloading (#11931)
Sometimes you need to be able to do removal-related cleanup, such as removing files from disk, or entries from a database. staticdata obviously isn't suitable for large data. The data shouldn't be removed if the entity is unloaded, only if it is removed.
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/luaentity_sao.cpp | 4 | ||||
-rw-r--r-- | src/server/luaentity_sao.h | 6 |
2 files changed, 5 insertions, 5 deletions
diff --git a/src/server/luaentity_sao.cpp b/src/server/luaentity_sao.cpp index a4b37ee09..a0a8aede0 100644 --- a/src/server/luaentity_sao.cpp +++ b/src/server/luaentity_sao.cpp @@ -117,13 +117,13 @@ void LuaEntitySAO::addedToEnvironment(u32 dtime_s) } } -void LuaEntitySAO::dispatchScriptDeactivate() +void LuaEntitySAO::dispatchScriptDeactivate(bool removal) { // 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); + m_env->getScriptIface()->luaentity_Deactivate(m_id, removal); } void LuaEntitySAO::step(float dtime, bool send_recommended) diff --git a/src/server/luaentity_sao.h b/src/server/luaentity_sao.h index 5a5aea7a9..1dc72b150 100644 --- a/src/server/luaentity_sao.h +++ b/src/server/luaentity_sao.h @@ -80,9 +80,9 @@ public: bool collideWithObjects() const; protected: - void dispatchScriptDeactivate(); - virtual void onMarkedForDeactivation() { dispatchScriptDeactivate(); } - virtual void onMarkedForRemoval() { dispatchScriptDeactivate(); } + void dispatchScriptDeactivate(bool removal); + virtual void onMarkedForDeactivation() { dispatchScriptDeactivate(false); } + virtual void onMarkedForRemoval() { dispatchScriptDeactivate(true); } private: std::string getPropertyPacket(); |