summaryrefslogtreecommitdiff
path: root/src/server/game/Scripting
diff options
context:
space:
mode:
author天鹿 <18535853+PkllonG@users.noreply.github.com>2024-04-12 04:09:17 +0800
committerGitHub <noreply@github.com>2024-04-11 17:09:17 -0300
commitbcf1ffa9f5c87632ee2e650c1de04e91d8fdc7dd (patch)
tree81a30192f750e47566be6dc1d16282d685bd3b0d /src/server/game/Scripting
parent83c4382c70c30a901c28f850d0b53a143ab2250b (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.cpp16
-rw-r--r--src/server/game/Scripting/ScriptDefines/MovementHandlerScript.h8
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