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)
{
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>;

View File

@@ -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