Core/Movement: waypoint movement

Port From (https://github.com/TrinityCore/TrinityCore/commit/97585597f0b1aff93873fe4d757556731bc0c1b2)
This commit is contained in:
hondacrx
2020-08-24 17:02:02 -04:00
parent c9e535bb3a
commit 3d3fd0f55f
31 changed files with 960 additions and 950 deletions
@@ -159,6 +159,28 @@ namespace Game.Entities
init.Stop();
}
public virtual void PauseMovement(uint timer = 0, MovementSlot slot = 0)
{
if (slot >= MovementSlot.Max)
return;
IMovementGenerator movementGenerator = GetMotionMaster().GetMotionSlot(slot);
if (movementGenerator != null)
movementGenerator.Pause(timer);
StopMoving();
}
public void ResumeMovement(uint timer = 0, MovementSlot slot = 0)
{
if (slot >= MovementSlot.Max)
return;
IMovementGenerator movementGenerator = GetMotionMaster().GetMotionSlot(slot);
if (movementGenerator != null)
movementGenerator.Resume(timer);
}
public void SetInFront(WorldObject target)
{
if (!HasUnitState(UnitState.CannotTurn))
+10 -1
View File
@@ -17,6 +17,7 @@
using Framework.Constants;
using Game.AI;
using Game.Movement;
using Game.Networking.Packets;
using Game.Spells;
using System.Collections.Generic;
@@ -351,8 +352,15 @@ namespace Game.Entities
if (IsTypeId(TypeId.Unit))
{
IMovementGenerator movementGenerator = GetMotionMaster().GetMotionSlot(MovementSlot.Idle);
if (movementGenerator != null)
movementGenerator.Pause(0);
GetMotionMaster().Clear(MovementSlot.Active);
StopMoving();
ToCreature().GetAI().OnCharmed(true);
GetMotionMaster().MoveIdle();
}
else
{
@@ -466,6 +474,7 @@ namespace Game.Entities
else
RestoreFaction();
///@todo Handle SLOT_IDLE motion resume
GetMotionMaster().InitDefault();
Creature creature = ToCreature();