Core/Movement: Ensure land and takeoff animations even if gravity enabled/disabled state is not what spline generator expects
Port From (https://github.com/TrinityCore/TrinityCore/commit/be3ae90dc488894afea8e4cca74d9105558fff53)
This commit is contained in:
@@ -754,16 +754,6 @@ namespace Game.Entities
|
|||||||
SendMessageToSet(packet, true);
|
SendMessageToSet(packet, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsCreature() && updateAnimTier && IsAlive() && !HasUnitState(UnitState.Root))
|
|
||||||
{
|
|
||||||
if (IsGravityDisabled())
|
|
||||||
SetAnimTier(AnimTier.Fly);
|
|
||||||
else if (IsHovering())
|
|
||||||
SetAnimTier(AnimTier.Hover);
|
|
||||||
else
|
|
||||||
SetAnimTier(AnimTier.Ground);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsAlive())
|
if (IsAlive())
|
||||||
{
|
{
|
||||||
if (IsGravityDisabled() || IsHovering())
|
if (IsGravityDisabled() || IsHovering())
|
||||||
@@ -774,6 +764,16 @@ namespace Game.Entities
|
|||||||
else if (IsPlayer()) // To update player who dies while flying/hovering
|
else if (IsPlayer()) // To update player who dies while flying/hovering
|
||||||
SetPlayHoverAnim(false, false);
|
SetPlayHoverAnim(false, false);
|
||||||
|
|
||||||
|
if (IsCreature() && updateAnimTier && IsAlive() && !HasUnitState(UnitState.Root))
|
||||||
|
{
|
||||||
|
if (IsGravityDisabled())
|
||||||
|
SetAnimTier(AnimTier.Fly);
|
||||||
|
else if (IsHovering())
|
||||||
|
SetAnimTier(AnimTier.Hover);
|
||||||
|
else
|
||||||
|
SetAnimTier(AnimTier.Ground);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1137,16 +1137,6 @@ namespace Game.Entities
|
|||||||
SendMessageToSet(packet, true);
|
SendMessageToSet(packet, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsCreature() && updateAnimTier && IsAlive() && !HasUnitState(UnitState.Root))
|
|
||||||
{
|
|
||||||
if (IsGravityDisabled())
|
|
||||||
SetAnimTier(AnimTier.Fly);
|
|
||||||
else if (IsHovering())
|
|
||||||
SetAnimTier(AnimTier.Hover);
|
|
||||||
else
|
|
||||||
SetAnimTier(AnimTier.Ground);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsAlive())
|
if (IsAlive())
|
||||||
{
|
{
|
||||||
if (IsGravityDisabled() || IsHovering())
|
if (IsGravityDisabled() || IsHovering())
|
||||||
@@ -1157,6 +1147,16 @@ namespace Game.Entities
|
|||||||
else if (IsPlayer()) // To update player who dies while flying/hovering
|
else if (IsPlayer()) // To update player who dies while flying/hovering
|
||||||
SetPlayHoverAnim(false, false);
|
SetPlayHoverAnim(false, false);
|
||||||
|
|
||||||
|
if (IsCreature() && updateAnimTier && IsAlive() && !HasUnitState(UnitState.Root))
|
||||||
|
{
|
||||||
|
if (IsGravityDisabled())
|
||||||
|
SetAnimTier(AnimTier.Fly);
|
||||||
|
else if (IsHovering())
|
||||||
|
SetAnimTier(AnimTier.Hover);
|
||||||
|
else
|
||||||
|
SetAnimTier(AnimTier.Ground);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,12 @@ namespace Game.Movement
|
|||||||
public UnitState BaseUnitState;
|
public UnitState BaseUnitState;
|
||||||
public TaskCompletionSource<MovementStopReason> ScriptResult;
|
public TaskCompletionSource<MovementStopReason> ScriptResult;
|
||||||
|
|
||||||
|
~MovementGenerator()
|
||||||
|
{
|
||||||
|
// Ensure script doesn't get stuck waiting for this movement
|
||||||
|
SetScriptResult(MovementStopReason.Interrupted);
|
||||||
|
}
|
||||||
|
|
||||||
// on top first update
|
// on top first update
|
||||||
public virtual void Initialize(Unit owner) { }
|
public virtual void Initialize(Unit owner) { }
|
||||||
|
|
||||||
|
|||||||
@@ -645,6 +645,8 @@ namespace Game.Movement
|
|||||||
{
|
{
|
||||||
init.MoveTo(pos, false);
|
init.MoveTo(pos, false);
|
||||||
init.SetAnimation(AnimTier.Ground, tierTransitionId.GetValueOrDefault(1));
|
init.SetAnimation(AnimTier.Ground, tierTransitionId.GetValueOrDefault(1));
|
||||||
|
init.SetFly(); // ensure smooth animation even if gravity is enabled before calling this function
|
||||||
|
init.SetSmooth();
|
||||||
switch (speedSelectionMode)
|
switch (speedSelectionMode)
|
||||||
{
|
{
|
||||||
case MovementWalkRunSpeedSelectionMode.ForceRun:
|
case MovementWalkRunSpeedSelectionMode.ForceRun:
|
||||||
@@ -669,7 +671,8 @@ namespace Game.Movement
|
|||||||
var initializer = (MoveSplineInit init) =>
|
var initializer = (MoveSplineInit init) =>
|
||||||
{
|
{
|
||||||
init.MoveTo(pos, false);
|
init.MoveTo(pos, false);
|
||||||
init.SetAnimation(AnimTier.Hover, tierTransitionId.GetValueOrDefault(15));
|
init.SetAnimation(AnimTier.Fly, tierTransitionId.GetValueOrDefault(2));
|
||||||
|
init.SetFly(); // ensure smooth animation even if gravity is disabled after calling this function
|
||||||
switch (speedSelectionMode)
|
switch (speedSelectionMode)
|
||||||
{
|
{
|
||||||
case MovementWalkRunSpeedSelectionMode.ForceRun:
|
case MovementWalkRunSpeedSelectionMode.ForceRun:
|
||||||
|
|||||||
@@ -321,7 +321,8 @@ namespace Game.Movement
|
|||||||
args.animTier = new();
|
args.animTier = new();
|
||||||
args.animTier.TierTransitionId = tierTransitionId;
|
args.animTier.TierTransitionId = tierTransitionId;
|
||||||
args.animTier.AnimTier = (byte)anim;
|
args.animTier.AnimTier = (byte)anim;
|
||||||
args.flags.EnableAnimation();
|
if (tierTransitionId == 0)
|
||||||
|
args.flags.EnableAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DisableTransportPathTransformations() { args.TransformForTransport = false; }
|
public void DisableTransportPathTransformations() { args.TransformForTransport = false; }
|
||||||
|
|||||||
@@ -403,7 +403,7 @@ namespace Game.Networking.Packets
|
|||||||
movementSpline.FaceGUID = moveSpline.facing.target;
|
movementSpline.FaceGUID = moveSpline.facing.target;
|
||||||
movementSpline.FaceSpot = moveSpline.facing.f;
|
movementSpline.FaceSpot = moveSpline.facing.f;
|
||||||
|
|
||||||
if (splineFlags.HasFlag(SplineFlag.Animation))
|
if (moveSpline.anim_tier != null)
|
||||||
{
|
{
|
||||||
MonsterSplineAnimTierTransition animTierTransition = new();
|
MonsterSplineAnimTierTransition animTierTransition = new();
|
||||||
animTierTransition.TierTransitionID = (int)moveSpline.anim_tier.TierTransitionId;
|
animTierTransition.TierTransitionID = (int)moveSpline.anim_tier.TierTransitionId;
|
||||||
|
|||||||
Reference in New Issue
Block a user