diff options
| author | Shauren <shauren.trinity@gmail.com> | 2013-06-11 17:28:16 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2013-06-11 17:28:16 +0200 |
| commit | 9ec22fffa00135cd776afebe2899bf54fb52f15f (patch) | |
| tree | 8435e279131052c9c50ec929868f3b698a194c3d /src/server/game/Entities/Creature | |
| parent | ef15fe8ed28cb2d65574e8c5c755d39f8a06a994 (diff) | |
Core/Objects: Object scale will now also affect bounding radius and combat reach fields
Diffstat (limited to 'src/server/game/Entities/Creature')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 26 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 3 |
2 files changed, 26 insertions, 3 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 3727e19bc2d..9077e045cef 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -330,9 +330,6 @@ bool Creature::InitEntry(uint32 entry, uint32 /*team*/, const CreatureData* data SetName(normalInfo->Name); // at normal entry always - SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, minfo->bounding_radius); - SetFloatValue(UNIT_FIELD_COMBATREACH, minfo->combat_reach); - SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0f); SetSpeed(MOVE_WALK, cinfo->speed_walk); @@ -340,6 +337,7 @@ bool Creature::InitEntry(uint32 entry, uint32 /*team*/, const CreatureData* data SetSpeed(MOVE_SWIM, 1.0f); // using 1.0 rate SetSpeed(MOVE_FLIGHT, 1.0f); // using 1.0 rate + // Will set UNIT_FIELD_BOUNDINGRADIUS and UNIT_FIELD_COMBATREACH SetObjectScale(cinfo->scale); SetFloatValue(UNIT_FIELD_HOVERHEIGHT, cinfo->HoverHeight); @@ -2555,3 +2553,25 @@ void Creature::UpdateMovementFlags() else RemoveUnitMovementFlag(MOVEMENTFLAG_SWIMMING); } + +void Creature::SetObjectScale(float scale) +{ + Unit::SetObjectScale(scale); + + if (CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(GetDisplayId())) + { + SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, minfo->bounding_radius * scale); + SetFloatValue(UNIT_FIELD_COMBATREACH, minfo->combat_reach * scale); + } +} + +void Creature::SetDisplayId(uint32 modelId) +{ + Unit::SetDisplayId(modelId); + + if (CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(modelId)) + { + SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, minfo->bounding_radius * GetFloatValue(OBJECT_FIELD_SCALE_X)); + SetFloatValue(UNIT_FIELD_COMBATREACH, minfo->combat_reach * GetFloatValue(OBJECT_FIELD_SCALE_X)); + } +} diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index b3372fc8c56..d96cbd0eb26 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -454,6 +454,9 @@ class Creature : public Unit, public GridObject<Creature>, public MapCreature void AddToWorld(); void RemoveFromWorld(); + void SetObjectScale(float scale); + void SetDisplayId(uint32 modelId); + void DisappearAndDie(); bool Create(uint32 guidlow, Map* map, uint32 phaseMask, uint32 Entry, uint32 vehId, uint32 team, float x, float y, float z, float ang, const CreatureData* data = NULL); |
