feat(Core/Scripts): Optimize MovementHandlerScript need#18672 (#18701)

* Add files via upload

* Add files via upload
This commit is contained in:
天鹿
2024-04-12 04:09:17 +08:00
committed by GitHub
parent 83c4382c70
commit bcf1ffa9f5
2 changed files with 16 additions and 8 deletions

View File

@@ -21,16 +21,18 @@
void ScriptMgr::OnPlayerMove(Player* player, MovementInfo movementInfo, uint32 opcode) void ScriptMgr::OnPlayerMove(Player* player, MovementInfo movementInfo, uint32 opcode)
{ {
ExecuteScript<MovementHandlerScript>([&](MovementHandlerScript* script) CALL_ENABLED_HOOKS(MovementHandlerScript, MOVEMENTHOOK_ON_PLAYER_MOVE, script->OnPlayerMove(player, movementInfo, opcode));
{
script->OnPlayerMove(player, movementInfo, opcode);
});
} }
MovementHandlerScript::MovementHandlerScript(const char* name) : MovementHandlerScript::MovementHandlerScript(const char* name, std::vector<uint16> enabledHooks) :
ScriptObject(name) 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>; template class AC_GAME_API ScriptRegistry<MovementHandlerScript>;

View File

@@ -21,10 +21,16 @@
#include "Object.h" #include "Object.h"
#include "ScriptObject.h" #include "ScriptObject.h"
enum MovementHook
{
MOVEMENTHOOK_ON_PLAYER_MOVE,
MOVEMENTHOOK_END
};
class MovementHandlerScript : public ScriptObject class MovementHandlerScript : public ScriptObject
{ {
protected: protected:
MovementHandlerScript(const char* name); MovementHandlerScript(const char* name, std::vector<uint16> enabledHooks = std::vector<uint16>());
public: public:
//Called whenever a player moves //Called whenever a player moves