aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrudor <erikstrandberg93@hotmail.com>2016-07-06 21:30:59 +0200
committerShauren <shauren.trinity@gmail.com>2016-07-06 21:30:59 +0200
commit147d77102c0dcb2e2c38c4e0b69d6cf45ab74e33 (patch)
tree224409795f5190e9ea30df77285b06aff976b620
parentbe461280d2e919df3dbf7990cbf9684a03bcfbad (diff)
[6.x] Fix camera and player collision not updating when object scale changes (#17529)
-rw-r--r--src/server/game/Entities/Player/Player.cpp9
-rw-r--r--src/server/game/Entities/Player/Player.h7
2 files changed, 10 insertions, 6 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 2875d3a2d5a..ad9bc52a335 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1761,6 +1761,15 @@ void Player::RemoveFromWorld()
}
}
+void Player::SetObjectScale(float scale)
+{
+ Unit::SetObjectScale(scale);
+ SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, scale * DEFAULT_WORLD_OBJECT_SIZE);
+ SetFloatValue(UNIT_FIELD_COMBATREACH, scale * DEFAULT_COMBAT_REACH);
+ if (IsInWorld())
+ SendMovementSetCollisionHeight(scale * GetCollisionHeight(IsMounted()));
+}
+
bool Player::IsImmunedToSpellEffect(SpellInfo const* spellInfo, uint32 index) const
{
SpellEffectInfo const* effect = spellInfo->GetEffect(GetMap()->GetDifficultyID(), index);
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 20739ed4148..33666bdd5b3 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1199,12 +1199,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void AddToWorld() override;
void RemoveFromWorld() override;
- void SetObjectScale(float scale) override
- {
- Unit::SetObjectScale(scale);
- SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, scale * DEFAULT_WORLD_OBJECT_SIZE);
- SetFloatValue(UNIT_FIELD_COMBATREACH, scale * DEFAULT_COMBAT_REACH);
- }
+ void SetObjectScale(float scale) override;
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options = 0);
bool TeleportTo(WorldLocation const &loc, uint32 options = 0);