From 1b7e923b2c44bd76e83aff6df15a8b27fddfeddf Mon Sep 17 00:00:00 2001 From: Petr Mikheev Date: Sat, 15 Jan 2022 12:01:30 +0000 Subject: [PATCH] Lua fixes --- apps/openmw/mwlua/luamanagerimp.cpp | 10 ++++++++-- apps/openmw/mwlua/luamanagerimp.hpp | 1 + 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();