mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 08:28:32 +01:00
Core/Movement: add new helper that cleans the referenced MovementSlot
This commit is contained in:
@@ -119,23 +119,6 @@ void MotionMaster::Clear(bool reset /*= true*/)
|
||||
DirectClean(reset);
|
||||
}
|
||||
|
||||
void MotionMaster::ClearExpireList()
|
||||
{
|
||||
for (auto itr : _expireList)
|
||||
DirectDelete(itr);
|
||||
|
||||
_expireList.clear();
|
||||
|
||||
if (empty())
|
||||
Initialize();
|
||||
else if (NeedInitTop())
|
||||
InitTop();
|
||||
else if (_cleanFlag & MMCF_RESET)
|
||||
top()->Reset(_owner);
|
||||
|
||||
_cleanFlag &= ~MMCF_RESET;
|
||||
}
|
||||
|
||||
void MotionMaster::MovementExpired(bool reset /*= true*/)
|
||||
{
|
||||
if (_cleanFlag & MMCF_UPDATE)
|
||||
@@ -150,6 +133,29 @@ void MotionMaster::MovementExpired(bool reset /*= true*/)
|
||||
DirectExpire(reset);
|
||||
}
|
||||
|
||||
void MotionMaster::ExpireMovement(MovementSlot slot)
|
||||
{
|
||||
if (empty() || slot >= MAX_MOTION_SLOT)
|
||||
return;
|
||||
|
||||
if (MovementGenerator* motion = GetMotionSlot(slot))
|
||||
{
|
||||
DirectDelete(motion);
|
||||
_slot[slot] = nullptr;
|
||||
}
|
||||
|
||||
if (!top())
|
||||
{
|
||||
while (!empty() && !top())
|
||||
--_top;
|
||||
|
||||
if (empty())
|
||||
Initialize();
|
||||
else if (NeedInitTop())
|
||||
InitTop();
|
||||
}
|
||||
}
|
||||
|
||||
MovementGeneratorType MotionMaster::GetCurrentMovementGeneratorType() const
|
||||
{
|
||||
if (empty())
|
||||
@@ -832,3 +838,20 @@ void MotionMaster::DelayedDelete(MovementGenerator* curr)
|
||||
|
||||
_expireList.push_back(curr);
|
||||
}
|
||||
|
||||
void MotionMaster::ClearExpireList()
|
||||
{
|
||||
for (auto itr : _expireList)
|
||||
DirectDelete(itr);
|
||||
|
||||
_expireList.clear();
|
||||
|
||||
if (empty())
|
||||
Initialize();
|
||||
else if (NeedInitTop())
|
||||
InitTop();
|
||||
else if (_cleanFlag & MMCF_RESET)
|
||||
top()->Reset(_owner);
|
||||
|
||||
_cleanFlag &= ~MMCF_RESET;
|
||||
}
|
||||
|
||||
@@ -106,6 +106,7 @@ class TC_GAME_API MotionMaster
|
||||
|
||||
void Clear(bool reset = true);
|
||||
void MovementExpired(bool reset = true);
|
||||
void ExpireMovement(MovementSlot slot);
|
||||
|
||||
MovementGeneratorType GetCurrentMovementGeneratorType() const;
|
||||
MovementGeneratorType GetMotionSlotType(int slot) const;
|
||||
|
||||
Reference in New Issue
Block a user