Core/Units: Update PlayHoverAnim state when flying or hovering (#29434)

(cherry picked from commit c1b36eec56)
This commit is contained in:
Meji
2023-11-25 14:04:33 +01:00
committed by funjoker
parent 49b13c8d32
commit 3a33dede9a
2 changed files with 28 additions and 2 deletions

View File

@@ -12809,6 +12809,16 @@ bool Unit::SetDisableGravity(bool disable, bool updateAnimTier /*= true*/)
SetAnimTier(AnimTier::Ground);
}
if (IsAlive())
{
if (IsGravityDisabled() || IsHovering())
SetPlayHoverAnim(true);
else
SetPlayHoverAnim(false);
}
else if (IsPlayer()) // To update player who dies while flying/hovering
SetPlayHoverAnim(false, false);
return true;
}
@@ -13025,6 +13035,16 @@ bool Unit::SetHover(bool enable, bool updateAnimTier /*= true*/)
SetAnimTier(AnimTier::Ground);
}
if (IsAlive())
{
if (IsGravityDisabled() || IsHovering())
SetPlayHoverAnim(true);
else
SetPlayHoverAnim(false);
}
else if (IsPlayer()) // To update player who dies while flying/hovering
SetPlayHoverAnim(false, false);
return true;
}
@@ -13336,10 +13356,16 @@ void Unit::UpdateMovementForcesModMagnitude()
}
}
void Unit::SetPlayHoverAnim(bool enable)
void Unit::SetPlayHoverAnim(bool enable, bool sendUpdate /*= true*/)
{
if (IsPlayingHoverAnim() == enable)
return;
_playHoverAnim = enable;
if (!sendUpdate)
return;
WorldPackets::Misc::SetPlayHoverAnim data;
data.UnitGUID = GetGUID();
data.PlayHoverAnim = enable;

View File

@@ -1217,7 +1217,7 @@ class TC_GAME_API Unit : public WorldObject
void MonsterMoveWithSpeed(float x, float y, float z, float speed, bool generatePath = false, bool forceDestination = false);
bool IsPlayingHoverAnim() const { return _playHoverAnim; }
void SetPlayHoverAnim(bool enable);
void SetPlayHoverAnim(bool enable, bool sendUpdate = true);
void CalculateHoverHeight();
void SetHoverHeight(float hoverHeight) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::HoverHeight), hoverHeight); }