diff options
author | Meji <alvaro.megias@outlook.com> | 2023-11-25 14:04:33 +0100 |
---|---|---|
committer | funjoker <funjoker109@gmail.com> | 2023-12-01 23:29:27 +0100 |
commit | 3a33dede9ab362322016213e07dc588d47a96fbb (patch) | |
tree | c72954c03e4fda38d54832dc0ee8bc2b5f7dabef /src | |
parent | 49b13c8d32e312780db45c1543e6321f3642f317 (diff) |
Core/Units: Update PlayHoverAnim state when flying or hovering (#29434)
(cherry picked from commit c1b36eec5678090654dfd65a3fef29ea8ada6ef2)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 28 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 |
2 files changed, 28 insertions, 2 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index cd94c267538..f8dd51400d7 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -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; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 207fd3758d5..b86de3ae7a1 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -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); } |