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.cpp42
1 files changed, 15 insertions, 27 deletions
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp
index 2114b94f6a4..9f36af744b1 100644
--- a/src/server/game/Movement/MotionMaster.cpp
+++ b/src/server/game/Movement/MotionMaster.cpp
@@ -363,12 +363,7 @@ void MotionMaster::Remove(MovementGenerator* movement, MovementSlot slot/* = MOT
{
auto itr = _generators.find(movement);
if (itr != _generators.end())
- {
- MovementGenerator* pointer = *itr;
- bool const top = GetCurrentMovementGenerator() == pointer;
- _generators.erase(pointer);
- Delete(pointer, top, false);
- }
+ Remove(itr, GetCurrentMovementGenerator() == *itr, false);
}
break;
default:
@@ -409,12 +404,7 @@ void MotionMaster::Remove(MovementGeneratorType type, MovementSlot slot/* = MOTI
});
if (itr != _generators.end())
- {
- MovementGenerator* pointer = *itr;
- bool const top = GetCurrentMovementGenerator() == pointer;
- _generators.erase(pointer);
- Delete(pointer, top, false);
- }
+ Remove(itr, GetCurrentMovementGenerator() == *itr, false);
}
break;
default:
@@ -1079,13 +1069,18 @@ void MotionMaster::LaunchMoveSpline(Movement::MoveSplineInit&& init, uint32 id/*
/******************** Private methods ********************/
-void MotionMaster::Pop(bool active, bool movementInform)
+void MotionMaster::Remove(MotionMasterContainer::iterator iterator, bool active, bool movementInform)
{
- MovementGenerator* pointer = *_generators.begin();
- _generators.erase(pointer);
+ MovementGenerator* pointer = *iterator;
+ _generators.erase(iterator);
Delete(pointer, active, movementInform);
}
+void MotionMaster::Pop(bool active, bool movementInform)
+{
+ Remove(_generators.begin(), active, movementInform);
+}
+
void MotionMaster::DirectInitialize()
{
// Clear ALL movement generators (including default)
@@ -1180,14 +1175,11 @@ void MotionMaster::DirectAdd(MovementGenerator* movement, MovementSlot slot/* =
{
if (movement->Priority >= (*_generators.begin())->Priority)
{
- MovementGenerator* pointer = *_generators.begin();
- if (movement->Priority == pointer->Priority)
- {
- _generators.erase(pointer);
- Delete(pointer, true, false);
- }
+ auto itr = _generators.begin();
+ if (movement->Priority == (*itr)->Priority)
+ Remove(itr, true, false);
else
- pointer->Deactivate(_owner);
+ (*itr)->Deactivate(_owner);
}
else
{
@@ -1197,11 +1189,7 @@ void MotionMaster::DirectAdd(MovementGenerator* movement, MovementSlot slot/* =
});
if (itr != _generators.end())
- {
- MovementGenerator* pointer = *itr;
- _generators.erase(pointer);
- Delete(pointer, false, false);
- }
+ Remove(itr, false, false);
}
}
else