Core/Movement: implement and use new remove method in MotionMaster
Port From (https://github.com/TrinityCore/TrinityCore/commit/72301bf02f4b8d9569139e7bfcc23df9a46f2479)
This commit is contained in:
@@ -347,11 +347,7 @@ namespace Game.Movement
|
|||||||
if (!_generators.Empty())
|
if (!_generators.Empty())
|
||||||
{
|
{
|
||||||
if (_generators.Contains(movement))
|
if (_generators.Contains(movement))
|
||||||
{
|
Remove(movement, GetCurrentMovementGenerator() == movement, false);
|
||||||
bool top = GetCurrentMovementGenerator() == movement;
|
|
||||||
_generators.Remove(movement);
|
|
||||||
Delete(movement, top, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -384,12 +380,7 @@ namespace Game.Movement
|
|||||||
{
|
{
|
||||||
var itr = _generators.FirstOrDefault(a => a.GetMovementGeneratorType() == type);
|
var itr = _generators.FirstOrDefault(a => a.GetMovementGeneratorType() == type);
|
||||||
if (itr != null)
|
if (itr != null)
|
||||||
{
|
Remove(itr, GetCurrentMovementGenerator() == itr, false);
|
||||||
MovementGenerator pointer = itr;
|
|
||||||
bool top = GetCurrentMovementGenerator() == pointer;
|
|
||||||
_generators.Remove(pointer);
|
|
||||||
Delete(pointer, top, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -982,11 +973,15 @@ namespace Game.Movement
|
|||||||
Add(movement);
|
Add(movement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Remove(MovementGenerator movement, bool active, bool movementInform)
|
||||||
|
{
|
||||||
|
_generators.Remove(movement);
|
||||||
|
Delete(movement, active, movementInform);
|
||||||
|
}
|
||||||
|
|
||||||
void Pop(bool active, bool movementInform)
|
void Pop(bool active, bool movementInform)
|
||||||
{
|
{
|
||||||
MovementGenerator pointer = _generators.FirstOrDefault();
|
Remove(_generators.FirstOrDefault(), active, movementInform);
|
||||||
_generators.Remove(pointer);
|
|
||||||
Delete(pointer, active, movementInform);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DirectInitialize()
|
void DirectInitialize()
|
||||||
@@ -1064,8 +1059,6 @@ namespace Game.Movement
|
|||||||
* NOTE: This mimics old behaviour: only one MOTION_SLOT_IDLE, MOTION_SLOT_ACTIVE, MOTION_SLOT_CONTROLLED
|
* NOTE: This mimics old behaviour: only one MOTION_SLOT_IDLE, MOTION_SLOT_ACTIVE, MOTION_SLOT_CONTROLLED
|
||||||
* On future changes support for multiple will be added
|
* On future changes support for multiple will be added
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
switch (slot)
|
switch (slot)
|
||||||
{
|
{
|
||||||
case MovementSlot.Default:
|
case MovementSlot.Default:
|
||||||
@@ -1081,23 +1074,17 @@ namespace Game.Movement
|
|||||||
{
|
{
|
||||||
if (movement.Priority >= _generators.FirstOrDefault().Priority)
|
if (movement.Priority >= _generators.FirstOrDefault().Priority)
|
||||||
{
|
{
|
||||||
MovementGenerator pointer = _generators.FirstOrDefault();
|
var itr = _generators.FirstOrDefault();
|
||||||
if (movement.Priority == pointer.Priority)
|
if (movement.Priority == itr.Priority)
|
||||||
{
|
Remove(itr, true, false);
|
||||||
_generators.Remove(pointer);
|
|
||||||
Delete(pointer, true, false);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
pointer.Deactivate(_owner);
|
itr.Deactivate(_owner);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var pointer = _generators.FirstOrDefault(a => a.Priority == movement.Priority);
|
var pointer = _generators.FirstOrDefault(a => a.Priority == movement.Priority);
|
||||||
if (pointer != null)
|
if (pointer != null)
|
||||||
{
|
Remove(pointer, false, false);
|
||||||
_generators.Remove(pointer);
|
|
||||||
Delete(pointer, false, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user