aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-02-11 22:59:28 +0100
committerShauren <shauren.trinity@gmail.com>2021-02-11 22:59:28 +0100
commit49992508a46eb8cd73205a896ae8d84bd991bc39 (patch)
treefaf75f44ade11292ab93a93c03ef22893bfe4dac /src/server/game/Entities
parent409ca262b3684fd8b3a47f65ceabf3ce73b2cc81 (diff)
Core/Movement: Refresh collision height on shapeshifting
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Player/Player.cpp6
-rw-r--r--src/server/game/Entities/Player/Player.h7
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp4
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())