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/script | |
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/script')
-rw-r--r-- | src/script/cpp_api/s_entity.cpp | 6 | ||||
-rw-r--r-- | src/script/cpp_api/s_entity.h | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/script/cpp_api/s_entity.cpp b/src/script/cpp_api/s_entity.cpp index 06337b9e8..9368bec76 100644 --- a/src/script/cpp_api/s_entity.cpp +++ b/src/script/cpp_api/s_entity.cpp @@ -103,7 +103,7 @@ void ScriptApiEntity::luaentity_Activate(u16 id, lua_pop(L, 2); // Pop object and error handler } -void ScriptApiEntity::luaentity_Deactivate(u16 id) +void ScriptApiEntity::luaentity_Deactivate(u16 id, bool removal) { SCRIPTAPI_PRECHECKHEADER @@ -120,9 +120,9 @@ void ScriptApiEntity::luaentity_Deactivate(u16 id) if (!lua_isnil(L, -1)) { luaL_checktype(L, -1, LUA_TFUNCTION); lua_pushvalue(L, object); - + lua_pushboolean(L, removal); setOriginFromTable(object); - PCALL_RES(lua_pcall(L, 1, 0, error_handler)); + PCALL_RES(lua_pcall(L, 2, 0, error_handler)); } else { lua_pop(L, 1); } diff --git a/src/script/cpp_api/s_entity.h b/src/script/cpp_api/s_entity.h index 7658ae922..13f3e9aa3 100644 --- a/src/script/cpp_api/s_entity.h +++ b/src/script/cpp_api/s_entity.h @@ -33,7 +33,7 @@ public: bool luaentity_Add(u16 id, const char *name); void luaentity_Activate(u16 id, const std::string &staticdata, u32 dtime_s); - void luaentity_Deactivate(u16 id); + void luaentity_Deactivate(u16 id, bool removal); void luaentity_Remove(u16 id); std::string luaentity_GetStaticdata(u16 id); void luaentity_GetProperties(u16 id, |