mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +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);
|
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*/)
|
void MotionMaster::MovementExpired(bool reset /*= true*/)
|
||||||
{
|
{
|
||||||
if (_cleanFlag & MMCF_UPDATE)
|
if (_cleanFlag & MMCF_UPDATE)
|
||||||
@@ -150,6 +133,29 @@ void MotionMaster::MovementExpired(bool reset /*= true*/)
|
|||||||
DirectExpire(reset);
|
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
|
MovementGeneratorType MotionMaster::GetCurrentMovementGeneratorType() const
|
||||||
{
|
{
|
||||||
if (empty())
|
if (empty())
|
||||||
@@ -832,3 +838,20 @@ void MotionMaster::DelayedDelete(MovementGenerator* curr)
|
|||||||
|
|
||||||
_expireList.push_back(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 Clear(bool reset = true);
|
||||||
void MovementExpired(bool reset = true);
|
void MovementExpired(bool reset = true);
|
||||||
|
void ExpireMovement(MovementSlot slot);
|
||||||
|
|
||||||
MovementGeneratorType GetCurrentMovementGeneratorType() const;
|
MovementGeneratorType GetCurrentMovementGeneratorType() const;
|
||||||
MovementGeneratorType GetMotionSlotType(int slot) const;
|
MovementGeneratorType GetMotionSlotType(int slot) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user