diff options
| author | 天鹿 <18535853+PkllonG@users.noreply.github.com> | 2024-04-12 04:09:17 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-11 17:09:17 -0300 |
| commit | bcf1ffa9f5c87632ee2e650c1de04e91d8fdc7dd (patch) | |
| tree | 81a30192f750e47566be6dc1d16282d685bd3b0d /src/server/game/Scripting | |
| parent | 83c4382c70c30a901c28f850d0b53a143ab2250b (diff) | |
feat(Core/Scripts): Optimize MovementHandlerScript need#18672 (#18701)
* Add files via upload
* Add files via upload
Diffstat (limited to 'src/server/game/Scripting')
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/MovementHandlerScript.cpp | 16 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptDefines/MovementHandlerScript.h | 8 |
2 files changed, 16 insertions, 8 deletions
diff --git a/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.cpp b/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.cpp index 2f79dd9579..c10f04014f 100644 --- a/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.cpp @@ -21,16 +21,18 @@ void ScriptMgr::OnPlayerMove(Player* player, MovementInfo movementInfo, uint32 opcode) { - ExecuteScript<MovementHandlerScript>([&](MovementHandlerScript* script) - { - script->OnPlayerMove(player, movementInfo, opcode); - }); + CALL_ENABLED_HOOKS(MovementHandlerScript, MOVEMENTHOOK_ON_PLAYER_MOVE, script->OnPlayerMove(player, movementInfo, opcode)); } -MovementHandlerScript::MovementHandlerScript(const char* name) : - ScriptObject(name) +MovementHandlerScript::MovementHandlerScript(const char* name, std::vector<uint16> enabledHooks) : + ScriptObject(name, MOVEMENTHOOK_END) { - ScriptRegistry<MovementHandlerScript>::AddScript(this); + // If empty - enable all available hooks. + if (enabledHooks.empty()) + for (uint16 i = 0; i < MOVEMENTHOOK_END; i++) + enabledHooks.emplace_back(i); + + ScriptRegistry<MovementHandlerScript>::AddScript(this, std::move(enabledHooks)); } template class AC_GAME_API ScriptRegistry<MovementHandlerScript>; diff --git a/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.h b/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.h index cc0fdc7cf1..0893cc2077 100644 --- a/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.h +++ b/src/server/game/Scripting/ScriptDefines/MovementHandlerScript.h @@ -21,10 +21,16 @@ #include "Object.h" #include "ScriptObject.h" +enum MovementHook +{ + MOVEMENTHOOK_ON_PLAYER_MOVE, + MOVEMENTHOOK_END +}; + class MovementHandlerScript : public ScriptObject { protected: - MovementHandlerScript(const char* name); + MovementHandlerScript(const char* name, std::vector<uint16> enabledHooks = std::vector<uint16>()); public: //Called whenever a player moves |
