diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-05-25 01:50:03 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-05-25 01:50:03 +0200 |
commit | acd4b6fb50c7feb2546a1da7a5adda65aac39897 (patch) | |
tree | fd5bcaeb91a6b3c330d84b345efdf24929efd236 /src | |
parent | fc85f0e30fed383515f3d519dcef2cb87e3ee854 (diff) |
Core/Entities: Allow all object types to use anim kits, not only players/creatures
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 65 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Object.h | 11 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 43 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 10 |
4 files changed, 64 insertions, 65 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index c2f7718438e..f30d8af21b4 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -212,11 +212,16 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c break; } - if (!(flags & UPDATEFLAG_LIVING)) - if (WorldObject const* worldObject = dynamic_cast<WorldObject const*>(this)) + if (WorldObject const* worldObject = dynamic_cast<WorldObject const*>(this)) + { + if (!(flags & UPDATEFLAG_LIVING)) if (!worldObject->m_movementInfo.transport.guid.IsEmpty()) flags |= UPDATEFLAG_TRANSPORT_POSITION; + if (worldObject->GetAIAnimKitId() || worldObject->GetMovementAnimKitId() || worldObject->GetMeleeAnimKitId()) + flags |= UPDATEFLAG_ANIMKITS; + } + if (flags & UPDATEFLAG_STATIONARY_POSITION) { // UPDATETYPE_CREATE_OBJECT2 for some gameobject types... @@ -237,14 +242,9 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c } if (Unit const* unit = ToUnit()) - { if (unit->GetVictim()) flags |= UPDATEFLAG_HAS_TARGET; - if (unit->GetAIAnimKitId() || unit->GetMovementAnimKitId() || unit->GetMeleeAnimKitId()) - flags |= UPDATEFLAG_ANIMKITS; - } - ByteBuffer buf(0x400); buf << uint8(updateType); buf << GetPackGUID(); @@ -502,10 +502,10 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const if (AnimKitCreate) { - Unit const* unit = ToUnit(); - *data << uint16(unit->GetAIAnimKitId()); // AiID - *data << uint16(unit->GetMovementAnimKitId()); // MovementID - *data << uint16(unit->GetMeleeAnimKitId()); // MeleeID + WorldObject const* self = static_cast<WorldObject const*>(this); + *data << uint16(self->GetAIAnimKitId()); // AiID + *data << uint16(self->GetMovementAnimKitId()); // MovementID + *data << uint16(self->GetMeleeAnimKitId()); // MeleeID } if (Rotation) @@ -1446,7 +1446,9 @@ void MovementInfo::OutDebug() WorldObject::WorldObject(bool isWorldObject) : WorldLocation(), LastUsedScriptID(0), m_name(""), m_isActive(false), m_isWorldObject(isWorldObject), m_zoneScript(NULL), m_transport(NULL), m_currMap(NULL), m_InstanceId(0), -m_phaseMask(PHASEMASK_NORMAL), _dbPhase(0), m_notifyflags(0), m_executed_notifies(0) +m_phaseMask(PHASEMASK_NORMAL), _dbPhase(0), m_notifyflags(0), m_executed_notifies(0), +m_aiAnimKitId(0), m_movementAnimKitId(0), m_meleeAnimKitId(0) + { m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE | GHOST_VISIBILITY_GHOST); m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE); @@ -3100,6 +3102,45 @@ ObjectGuid WorldObject::GetTransGUID() const return ObjectGuid::Empty; } +void WorldObject::SetAIAnimKitId(uint16 animKitId) +{ + if (m_aiAnimKitId == animKitId) + return; + + m_aiAnimKitId = animKitId; + + WorldPacket data(SMSG_SET_AI_ANIM_KIT, 8 + 2); + data << GetPackGUID(); + data << uint16(animKitId); + SendMessageToSet(&data, true); +} + +void WorldObject::SetMovementAnimKitId(uint16 animKitId) +{ + if (m_movementAnimKitId == animKitId) + return; + + m_movementAnimKitId = animKitId; + + WorldPacket data(SMSG_SET_MOVEMENT_ANIM_KIT, 8 + 2); + data << GetPackGUID(); + data << uint16(animKitId); + SendMessageToSet(&data, true); +} + +void WorldObject::SetMeleeAnimKitId(uint16 animKitId) +{ + if (m_meleeAnimKitId == animKitId) + return; + + m_meleeAnimKitId = animKitId; + + WorldPacket data(SMSG_SET_MELEE_ANIM_KIT, 8 + 2); + data << GetPackGUID(); + data << uint16(animKitId); + SendMessageToSet(&data, true); +} + void WorldObject::RebuildTerrainSwaps() { // Clear all terrain swaps, will be rebuilt below diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index b4b66bd5121..b9a6320a835 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -649,6 +649,13 @@ class WorldObject : public Object, public WorldLocation virtual float GetStationaryZ() const { return GetPositionZ(); } virtual float GetStationaryO() const { return GetOrientation(); } + uint16 GetAIAnimKitId() const { return m_aiAnimKitId; } + void SetAIAnimKitId(uint16 animKitId); + uint16 GetMovementAnimKitId() const { return m_movementAnimKitId; } + void SetMovementAnimKitId(uint16 animKitId); + uint16 GetMeleeAnimKitId() const { return m_meleeAnimKitId; } + void SetMeleeAnimKitId(uint16 animKitId); + protected: std::string m_name; bool m_isActive; @@ -689,6 +696,10 @@ class WorldObject : public Object, public WorldLocation bool CanDetect(WorldObject const* obj, bool ignoreStealth) const; bool CanDetectInvisibilityOf(WorldObject const* obj) const; bool CanDetectStealthOf(WorldObject const* obj) const; + + uint16 m_aiAnimKitId; + uint16 m_movementAnimKitId; + uint16 m_meleeAnimKitId; }; namespace Trinity diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index a581e612980..076275bf005 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -284,10 +284,6 @@ Unit::Unit(bool isWorldObject) : _oldFactionId = 0; _isWalkingBeforeCharm = false; - - _aiAnimKitId = 0; - _movementAnimKitId = 0; - _meleeAnimKitId = 0; } //////////////////////////////////////////////////////////// @@ -13371,45 +13367,6 @@ void Unit::SendDurabilityLoss(Player* receiver, uint32 percent) receiver->GetSession()->SendPacket(packet.Write()); } -void Unit::SetAIAnimKitId(uint16 animKitId) -{ - if (_aiAnimKitId == animKitId) - return; - - _aiAnimKitId = animKitId; - - WorldPacket data(SMSG_SET_AI_ANIM_KIT, 8 + 2); - data << GetPackGUID(); - data << uint16(animKitId); - SendMessageToSet(&data, true); -} - -void Unit::SetMovementAnimKitId(uint16 animKitId) -{ - if (_movementAnimKitId == animKitId) - return; - - _movementAnimKitId = animKitId; - - WorldPacket data(SMSG_SET_MOVEMENT_ANIM_KIT, 8 + 2); - data << GetPackGUID(); - data << uint16(animKitId); - SendMessageToSet(&data, true); -} - -void Unit::SetMeleeAnimKitId(uint16 animKitId) -{ - if (_meleeAnimKitId == animKitId) - return; - - _meleeAnimKitId = animKitId; - - WorldPacket data(SMSG_SET_MELEE_ANIM_KIT, 8 + 2); - data << GetPackGUID(); - data << uint16(animKitId); - SendMessageToSet(&data, true); -} - void Unit::PlayOneShotAnimKit(uint16 animKitId) { WorldPacket data(SMSG_PLAY_ONE_SHOT_ANIM_KIT, 7+2); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 252f044b4ef..28f2c778812 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1489,12 +1489,6 @@ class Unit : public WorldObject MountCapabilityEntry const* GetMountCapability(uint32 mountType) const; void SendDurabilityLoss(Player* receiver, uint32 percent); - uint16 GetAIAnimKitId() const { return _aiAnimKitId; } - void SetAIAnimKitId(uint16 animKitId); - uint16 GetMovementAnimKitId() const { return _movementAnimKitId; } - void SetMovementAnimKitId(uint16 animKitId); - uint16 GetMeleeAnimKitId() const { return _meleeAnimKitId; } - void SetMeleeAnimKitId(uint16 animKitId); void PlayOneShotAnimKit(uint16 animKitId); uint16 GetMaxSkillValueForLevel(Unit const* target = NULL) const { return (target ? getLevelForTarget(target) : getLevel()) * 5; } @@ -2346,10 +2340,6 @@ class Unit : public WorldObject time_t _lastDamagedTime; // Part of Evade mechanics - uint16 _aiAnimKitId; - uint16 _movementAnimKitId; - uint16 _meleeAnimKitId; - SpellHistory* _spellHistory; }; |