diff options
author | Traesh <traesh@farahlon.com> | 2017-01-01 03:22:05 +0100 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-01-01 03:23:04 +0100 |
commit | 96f7ce4bfa0942ee75362d94a21435dbe388ffb3 (patch) | |
tree | c5d439c1d90e3ac22f7f2540b6b909707aaf7874 /src/server/game/Scripting/ScriptMgr.cpp | |
parent | ab06ae799ebefd53a9420aa3642c7354f84e4696 (diff) |
Core/Scripting: Added missing hotswap code for SceneScripts
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 726aa79fcca..0aaa76a2bcd 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -662,6 +662,35 @@ private: bool swapped; }; +/// This hook is responsible for swapping SceneScript's +template<typename Base> +class ScriptRegistrySwapHooks<SceneScript, Base> + : public ScriptRegistrySwapHookBase +{ +public: + ScriptRegistrySwapHooks() : swapped(false) { } + + void BeforeReleaseContext(std::string const& context) final override + { + auto const bounds = static_cast<Base*>(this)->_ids_of_contexts.equal_range(context); + if (bounds.first != bounds.second) + swapped = true; + } + + void BeforeSwapContext(bool /*initialize*/) override + { + swapped = false; + } + + void BeforeUnload() final override + { + ASSERT(!swapped); + } + +private: + bool swapped; +}; + /// This hook is responsible for swapping SpellScriptLoader's template<typename Base> class ScriptRegistrySwapHooks<SpellScriptLoader, Base> |