From 221ed21ed27bf5508689ee8df23317f6f3fe99de Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sat, 18 Jan 2020 16:13:29 +0100 Subject: [PATCH] Core/Units: applied feedback from TC pull request for aura interrupt checkups --- src/server/game/Entities/Unit/Unit.cpp | 10 ++++++---- src/server/game/Entities/Unit/Unit.h | 16 ++++++++++------ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f6963d5a8f..67fa564442 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -409,6 +409,8 @@ Unit::Unit(bool isWorldObject) : _oldFactionId = 0; _isWalkingBeforeCharm = false; + + _positionUpdateInfo = PositionUpdateInfo(); } //////////////////////////////////////////////////////////// @@ -603,10 +605,10 @@ void Unit::UpdateSplinePosition() void Unit::InterruptMovementBasedAuras() { // TODO: Check if orientation transport offset changed instead of only global orientation - if (m_positionUpdateInfo.Turned) + if (_positionUpdateInfo.Turned) RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_TURNING); - if (m_positionUpdateInfo.Relocated && !GetVehicle()) + if (_positionUpdateInfo.Relocated && !GetVehicle()) RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_MOVE); } @@ -13888,8 +13890,8 @@ bool Unit::UpdatePosition(float x, float y, float z, float orientation, bool tel UpdatePositionData(); - m_positionUpdateInfo.Relocated = relocated; - m_positionUpdateInfo.Turned = turn; + _positionUpdateInfo.Relocated = relocated; + _positionUpdateInfo.Turned = turn; return (relocated || turn); } diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index f03fe2fd8a..a1f9eacfef 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -944,6 +944,14 @@ enum PlayerTotemType SUMMON_TYPE_TOTEM_AIR = 83 }; +struct PositionUpdateInfo +{ + PositionUpdateInfo() : Relocated(false), Turned(false) { } + + bool Relocated; + bool Turned; +}; + // delay time next attack to prevent client attack animation problems #define ATTACK_DISPLAY_DELAY 200 #define MAX_PLAYER_STEALTH_DETECT_RANGE 30.0f // max distance for detection targets by player @@ -1995,12 +2003,6 @@ class TC_GAME_API Unit : public WorldObject void UpdateSplineMovement(uint32 t_diff); void UpdateSplinePosition(); - struct - { - bool Relocated = false; - bool Turned = false; - } m_positionUpdateInfo; - // player or player's pet float GetCombatRatingReduction(CombatRating cr) const; uint32 GetCombatRatingDamageReduction(CombatRating cr, float rate, float cap, uint32 damage) const; @@ -2040,6 +2042,8 @@ class TC_GAME_API Unit : public WorldObject time_t _lastDamagedTime; // Part of Evade mechanics SpellHistory* m_spellHistory; + + PositionUpdateInfo _positionUpdateInfo; }; namespace Trinity