aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorLars Müller <34514239+appgurueu@users.noreply.github.com>2022-06-11 20:01:14 +0200
committerGitHub <noreply@github.com>2022-06-11 20:01:14 +0200
commite7d4ec6834282402c24fe432e0dcebe78b7fcd01 (patch)
tree5ccd0bb17b5eba3dc48b8954c07c296c6a64437d /src/server
parentf4a53f7ee6fb5482f8193353c35be54b40533d6f (diff)
downloadminetest-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.cpp4
-rw-r--r--src/server/luaentity_sao.h6
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();