Skip to content

Commit 76fe8ba

Browse files
committed
Core/Movement: Reduce code duplication in few MotionMaster::*Clear functions
1 parent 1cfb430 commit 76fe8ba

1 file changed

Lines changed: 4 additions & 19 deletions

File tree

src/server/game/Movement/MotionMaster.cpp

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -416,14 +416,7 @@ void MotionMaster::Remove(MovementGeneratorType type, MovementSlot slot/* = MOTI
416416
DirectClearDefault();
417417
break;
418418
case MOTION_SLOT_ACTIVE:
419-
do
420-
{
421-
auto itr = std::ranges::find(_generators, type,
422-
[](MovementGenerator const* a) { return a->GetMovementGeneratorType(); });
423-
if (itr == _generators.end())
424-
break;
425-
Remove(itr, GetCurrentMovementGenerator() == *itr, false);
426-
} while (true);
419+
DirectClear([type](MovementGenerator const* a) { return a->GetMovementGeneratorType() == type; });
427420
break;
428421
default:
429422
break;
@@ -492,11 +485,7 @@ void MotionMaster::Clear(MovementGeneratorPriority priority)
492485
if (Empty())
493486
return;
494487

495-
std::function<bool(MovementGenerator*)> criteria = [priority](MovementGenerator* a) -> bool
496-
{
497-
return a->Priority == priority;
498-
};
499-
DirectClear(criteria);
488+
DirectClear([priority](MovementGenerator const* a) { return a->Priority == priority; });
500489
}
501490

502491
void MotionMaster::PropagateSpeedChange()
@@ -1115,15 +1104,11 @@ void MotionMaster::DirectClearDefault()
11151104

11161105
void MotionMaster::DirectClear(std::function<bool(MovementGenerator*)> const& filter)
11171106
{
1107+
MovementGenerator const* top = GetCurrentMovementGenerator();
11181108
for (auto itr = _generators.begin(); itr != _generators.end();)
11191109
{
11201110
if (filter(*itr))
1121-
{
1122-
MovementGenerator const* top = GetCurrentMovementGenerator(); // erase may change top, get fresh value on every removal
1123-
MovementGenerator* movement = *itr;
1124-
itr = _generators.erase(itr);
1125-
Delete(movement, movement == top, false);
1126-
}
1111+
Remove(itr, *itr == top, false);
11271112
else
11281113
++itr;
11291114
}

0 commit comments

Comments
 (0)