aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Movement/MotionMaster.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Movement/MotionMaster.cpp')
-rw-r--r--src/server/game/Movement/MotionMaster.cpp27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp
index 9e50147cb56..b9efa1cf273 100644
--- a/src/server/game/Movement/MotionMaster.cpp
+++ b/src/server/game/Movement/MotionMaster.cpp
@@ -89,13 +89,15 @@ void MotionMaster::UpdateMotion(uint32 diff)
ASSERT(!empty());
_cleanFlag |= MMCF_UPDATE;
- bool isMoveGenUpdateSuccess = top()->Update(_owner, diff);
- _cleanFlag &= ~MMCF_UPDATE;
-
- if (!isMoveGenUpdateSuccess)
+ if (!top()->Update(_owner, diff))
+ {
+ _cleanFlag &= ~MMCF_UPDATE;
MovementExpired();
+ }
+ else
+ _cleanFlag &= ~MMCF_UPDATE;
- if (_expireList)
+ if (!_expireList.empty())
ClearExpireList();
}
@@ -115,14 +117,10 @@ void MotionMaster::Clear(bool reset /*= true*/)
void MotionMaster::ClearExpireList()
{
- for (size_t i = 0; i < _expireList->size(); ++i)
- {
- MovementGenerator* mg = (*_expireList)[i];
- DirectDelete(mg);
- }
+ for (auto itr = _expireList.begin(); itr != _expireList.end(); itr++)
+ DirectDelete(*itr);
- delete _expireList;
- _expireList = nullptr;
+ _expireList.clear();
if (empty())
Initialize();
@@ -835,7 +833,6 @@ void MotionMaster::DelayedDelete(MovementGenerator* curr)
TC_LOG_FATAL("misc", "Unit (Entry %u) is trying to delete its updating Movement Generator (Type %u)!", _owner->GetEntry(), curr->GetMovementGeneratorType());
if (IsStatic(curr))
return;
- if (!_expireList)
- _expireList = new ExpireList();
- _expireList->push_back(curr);
+
+ _expireList.push_back(curr);
}