aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/Object.cpp65
-rw-r--r--src/server/game/Entities/Object/Object.h11
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp43
-rw-r--r--src/server/game/Entities/Unit/Unit.h10
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;
};