summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruramer <antonuramer@gmail.com>2022-01-15 12:01:30 +0000
committeruramer <antonuramer@gmail.com>2022-01-15 12:01:30 +0000
commitc33534f468be955b370a0e8aa989fea22a3d80b0 (patch)
tree6c722d5d924c8c6dc0c7b6fbfe61c6e2d06f6315
parent98d15884779ff6792acacf1a024a38cdaf4daeb9 (diff)
parent1b7e923b2c44bd76e83aff6df15a8b27fddfeddf (diff)
Merge branch 'lua_fix' into 'master'
Lua fixes Closes #6549 See merge request OpenMW/openmw!1557
-rw-r--r--apps/openmw/mwlua/luamanagerimp.cpp10
-rw-r--r--apps/openmw/mwlua/luamanagerimp.hpp1
2 files changed, 9 insertions, 2 deletions
diff --git a/apps/openmw/mwlua/luamanagerimp.cpp b/apps/openmw/mwlua/luamanagerimp.cpp
index 658ee7c809..f49aa81493 100644
--- a/apps/openmw/mwlua/luamanagerimp.cpp
+++ b/apps/openmw/mwlua/luamanagerimp.cpp
@@ -244,7 +244,10 @@ namespace MWLua
mPlayer = ptr;
LocalScripts* localScripts = ptr.getRefData().getLuaScripts();
if (!localScripts)
+ {
localScripts = createLocalScripts(ptr, ESM::LuaScriptCfg::sPlayer);
+ localScripts->addAutoStartedScripts();
+ }
mActiveLocalScripts.insert(localScripts);
mLocalEngineEvents.push_back({getId(ptr), LocalScripts::OnActive{}});
mPlayerChanged = true;
@@ -274,7 +277,10 @@ namespace MWLua
{
ESM::LuaScriptCfg::Flags flag = getLuaScriptFlag(ptr);
if (!mConfiguration.getListByFlag(flag).empty())
- localScripts = createLocalScripts(ptr, flag); // TODO: put to a queue and apply on next `update()`
+ {
+ localScripts = createLocalScripts(ptr, flag);
+ localScripts->addAutoStartedScripts(); // TODO: put to a queue and apply on next `update()`
+ }
}
if (localScripts)
{
@@ -327,6 +333,7 @@ namespace MWLua
if (!localScripts)
{
localScripts = createLocalScripts(ptr, getLuaScriptFlag(ptr));
+ localScripts->addAutoStartedScripts();
if (ptr.isInCell() && MWBase::Environment::get().getWorld()->isCellActive(ptr.getCell()))
mActiveLocalScripts.insert(localScripts);
}
@@ -354,7 +361,6 @@ namespace MWLua
}
scripts->addPackage("openmw.nearby", mNearbyPackage);
scripts->setSerializer(mLocalSerializer.get());
- scripts->addAutoStartedScripts();
MWWorld::RefData& refData = ptr.getRefData();
refData.setLuaScripts(std::move(scripts));
diff --git a/apps/openmw/mwlua/luamanagerimp.hpp b/apps/openmw/mwlua/luamanagerimp.hpp
index d050cb9413..5928a4a511 100644
--- a/apps/openmw/mwlua/luamanagerimp.hpp
+++ b/apps/openmw/mwlua/luamanagerimp.hpp
@@ -24,6 +24,7 @@ namespace MWLua
{
public:
LuaManager(const VFS::Manager* vfs, const std::string& libsDir);
+ ~LuaManager() { clear(); }
// Called by engine.cpp when the environment is fully initialized.
void init();