diff options
| author | Shauren <shauren.trinity@gmail.com> | 2021-02-11 22:59:28 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-02-11 22:59:28 +0100 |
| commit | 49992508a46eb8cd73205a896ae8d84bd991bc39 (patch) | |
| tree | faf75f44ade11292ab93a93c03ef22893bfe4dac /src/server/game/Entities | |
| parent | 409ca262b3684fd8b3a47f65ceabf3ce73b2cc81 (diff) | |
Core/Movement: Refresh collision height on shapeshifting
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 6 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 4 |
3 files changed, 11 insertions, 6 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 1494f8615f3..1072a8f1cb4 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1657,7 +1657,7 @@ void Player::SetObjectScale(float scale) SetBoundingRadius(scale * DEFAULT_PLAYER_BOUNDING_RADIUS); SetCombatReach(scale * DEFAULT_PLAYER_COMBAT_REACH); if (IsInWorld()) - SendMovementSetCollisionHeight(scale * GetCollisionHeight(IsMounted())); + SendMovementSetCollisionHeight(scale * GetCollisionHeight(IsMounted()), WorldPackets::Movement::UpdateCollisionHeightReason::Scale); } bool Player::IsImmunedToSpellEffect(SpellInfo const* spellInfo, uint32 index, Unit* caster) const @@ -28194,7 +28194,7 @@ void Player::DeleteGarrison() } } -void Player::SendMovementSetCollisionHeight(float height) +void Player::SendMovementSetCollisionHeight(float height, WorldPackets::Movement::UpdateCollisionHeightReason reason) { WorldPackets::Movement::MoveSetCollisionHeight setCollisionHeight; setCollisionHeight.MoverGUID = GetGUID(); @@ -28203,7 +28203,7 @@ void Player::SendMovementSetCollisionHeight(float height) setCollisionHeight.Scale = GetObjectScale(); setCollisionHeight.MountDisplayID = GetMountDisplayId(); setCollisionHeight.ScaleDuration = m_unitData->ScaleDuration; - setCollisionHeight.Reason = WorldPackets::Movement::UPDATE_COLLISION_HEIGHT_MOUNT; + setCollisionHeight.Reason = reason; SendDirectMessage(setCollisionHeight.Write()); WorldPackets::Movement::MoveUpdateCollisionHeight updateCollisionHeight; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 8e8e5a7a13c..3d874556160 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -104,6 +104,11 @@ namespace WorldPackets { struct CharacterCreateInfo; } + + namespace Movement + { + enum class UpdateCollisionHeightReason : uint8; + } } typedef std::deque<Mail*> PlayerMails; @@ -2387,7 +2392,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void ValidateMovementInfo(MovementInfo* mi); - void SendMovementSetCollisionHeight(float height); + void SendMovementSetCollisionHeight(float height, WorldPackets::Movement::UpdateCollisionHeightReason reason); bool CanFly() const override { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 47141ab0282..6f70103f31e 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -7848,7 +7848,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry) if (charm->GetTypeId() == TYPEID_UNIT) charm->AddUnitFlag(UNIT_FLAG_STUNNED); - player->SendMovementSetCollisionHeight(player->GetCollisionHeight(true)); + player->SendMovementSetCollisionHeight(player->GetCollisionHeight(true), WorldPackets::Movement::UpdateCollisionHeightReason::Mount); } RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_MOUNT); @@ -7863,7 +7863,7 @@ void Unit::Dismount() RemoveUnitFlag(UNIT_FLAG_MOUNT); if (Player* thisPlayer = ToPlayer()) - thisPlayer->SendMovementSetCollisionHeight(thisPlayer->GetCollisionHeight(false)); + thisPlayer->SendMovementSetCollisionHeight(thisPlayer->GetCollisionHeight(false), WorldPackets::Movement::UpdateCollisionHeightReason::Mount); // dismount as a vehicle if (GetTypeId() == TYPEID_PLAYER && GetVehicleKit()) |
