aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2014-09-14 16:14:12 +0200
committerShauren <shauren.trinity@gmail.com>2014-09-14 16:14:12 +0200
commita0e50ea35fca61447bf07fc45d93c98234ba59f7 (patch)
treeb4ee69a63866f42e466a3c03fc031ce0710ac762 /src/server/game/Entities/Object
parentce67a097bf3c0c3241f4441a808e32639ddbaafb (diff)
Core/Entities: Use ObjectGuid class in game project
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp48
-rw-r--r--src/server/game/Entities/Object/Object.h27
-rw-r--r--src/server/game/Entities/Object/ObjectDefines.h169
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.cpp20
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.h49
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateData.cpp14
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateData.h8
7 files changed, 93 insertions, 242 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index acdc72c8f04..18f222158c6 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -135,8 +135,8 @@ void Object::_Create(uint32 guidlow, uint32 entry, HighGuid guidhigh)
{
if (!m_uint32Values) _InitValues();
- uint64 guid = MAKE_NEW_GUID(guidlow, entry, guidhigh);
- SetUInt64Value(OBJECT_FIELD_GUID, guid);
+ ObjectGuid guid(guidhigh, entry, guidlow);
+ SetGuidValue(OBJECT_FIELD_GUID, guid);
SetUInt32Value(OBJECT_FIELD_TYPE, m_objectType);
m_PackGUID.Set(guid);
}
@@ -333,7 +333,7 @@ uint16 Object::GetUInt16Value(uint16 index, uint8 offset) const
return *(((uint16*)&m_uint32Values[index])+offset);
}
-ObjectGuid const& Object::GetGuidValue(uint16 index) const
+ObjectGuid Object::GetGuidValue(uint16 index) const
{
ASSERT(index + 1 < m_valuesCount || PrintIndexError(index, false));
return *((ObjectGuid*)&(m_uint32Values[index]));
@@ -690,13 +690,12 @@ void Object::SetUInt64Value(uint16 index, uint64 value)
}
}
-bool Object::AddUInt64Value(uint16 index, uint64 value)
+bool Object::AddGuidValue(uint16 index, ObjectGuid value)
{
ASSERT(index + 1 < m_valuesCount || PrintIndexError(index, true));
- if (value && !*((uint64*)&(m_uint32Values[index])))
+ if (value && !*((ObjectGuid*)&(m_uint32Values[index])))
{
- m_uint32Values[index] = PAIR64_LOPART(value);
- m_uint32Values[index + 1] = PAIR64_HIPART(value);
+ *((ObjectGuid*)&(m_uint32Values[index])) = value;
_changesMask.SetBit(index);
_changesMask.SetBit(index + 1);
@@ -712,10 +711,10 @@ bool Object::AddUInt64Value(uint16 index, uint64 value)
return false;
}
-bool Object::RemoveUInt64Value(uint16 index, uint64 value)
+bool Object::RemoveGuidValue(uint16 index, ObjectGuid value)
{
ASSERT(index + 1 < m_valuesCount || PrintIndexError(index, true));
- if (value && *((uint64*)&(m_uint32Values[index])) == value)
+ if (value && *((ObjectGuid*)&(m_uint32Values[index])) == value)
{
m_uint32Values[index] = 0;
m_uint32Values[index + 1] = 0;
@@ -799,6 +798,23 @@ void Object::SetUInt16Value(uint16 index, uint8 offset, uint16 value)
}
}
+void Object::SetGuidValue(uint16 index, ObjectGuid value)
+{
+ ASSERT(index + 1 < m_valuesCount || PrintIndexError(index, true));
+ if (*((ObjectGuid*)&(m_uint32Values[index])) != value)
+ {
+ *((ObjectGuid*)&(m_uint32Values[index])) = value;
+ _changesMask.SetBit(index);
+ _changesMask.SetBit(index + 1);
+
+ if (m_inWorld && !m_objectUpdated)
+ {
+ sObjectAccessor->AddUpdateObject(this);
+ m_objectUpdated = true;
+ }
+ }
+}
+
void Object::SetStatFloatValue(uint16 index, float value)
{
if (value < 0)
@@ -2070,7 +2086,7 @@ void WorldObject::SendMessageToSet(WorldPacket* data, Player const* skipped_rcvr
VisitNearbyWorldObject(GetVisibilityRange(), notifier);
}
-void WorldObject::SendObjectDeSpawnAnim(uint64 guid)
+void WorldObject::SendObjectDeSpawnAnim(ObjectGuid guid)
{
WorldPacket data(SMSG_GAMEOBJECT_DESPAWN_ANIM, 8);
data << uint64(guid);
@@ -2767,7 +2783,7 @@ struct WorldObjectChangeAccumulator
{
UpdateDataMapType& i_updateDatas;
WorldObject& i_object;
- std::set<uint64> plr_list;
+ GuidSet plr_list;
WorldObjectChangeAccumulator(WorldObject &obj, UpdateDataMapType &d) : i_updateDatas(d), i_object(obj) { }
void Visit(PlayerMapType &m)
{
@@ -2808,13 +2824,13 @@ struct WorldObjectChangeAccumulator
for (DynamicObjectMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
{
source = iter->GetSource();
- uint64 guid = source->GetCasterGUID();
+ ObjectGuid guid = source->GetCasterGUID();
- if (IS_PLAYER_GUID(guid))
+ if (guid.IsPlayer())
{
//Caster may be NULL if DynObj is in removelist
if (Player* caster = ObjectAccessor::FindPlayer(guid))
- if (caster->GetUInt64Value(PLAYER_FARSIGHT) == source->GetGUID())
+ if (caster->GetGuidValue(PLAYER_FARSIGHT) == source->GetGUID())
BuildPacket(caster);
}
}
@@ -2847,9 +2863,9 @@ void WorldObject::BuildUpdate(UpdateDataMapType& data_map)
ClearUpdateMask(false);
}
-uint64 WorldObject::GetTransGUID() const
+ObjectGuid WorldObject::GetTransGUID() const
{
if (GetTransport())
return GetTransport()->GetGUID();
- return 0;
+ return ObjectGuid::Empty;
}
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 48147b693c5..b23ea4d8dfa 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -101,10 +101,10 @@ class Object
virtual void AddToWorld();
virtual void RemoveFromWorld();
- uint64 GetGUID() const { return GetUInt64Value(OBJECT_FIELD_GUID); }
- uint32 GetGUIDLow() const { return GUID_LOPART(GetUInt64Value(OBJECT_FIELD_GUID)); }
- uint32 GetGUIDMid() const { return GUID_ENPART(GetUInt64Value(OBJECT_FIELD_GUID)); }
- uint32 GetGUIDHigh() const { return GUID_HIPART(GetUInt64Value(OBJECT_FIELD_GUID)); }
+ ObjectGuid GetGUID() const { return GetGuidValue(OBJECT_FIELD_GUID); }
+ uint32 GetGUIDLow() const { return GetGuidValue(OBJECT_FIELD_GUID).GetCounter(); }
+ uint32 GetGUIDMid() const { return GetGuidValue(OBJECT_FIELD_GUID).GetEntry(); }
+ uint32 GetGUIDHigh() const { return GetGuidValue(OBJECT_FIELD_GUID).GetHigh(); }
PackedGuid const& GetPackGUID() const { return m_PackGUID; }
uint32 GetEntry() const { return GetUInt32Value(OBJECT_FIELD_ENTRY); }
void SetEntry(uint32 entry) { SetUInt32Value(OBJECT_FIELD_ENTRY, entry); }
@@ -130,7 +130,7 @@ class Object
float GetFloatValue(uint16 index) const;
uint8 GetByteValue(uint16 index, uint8 offset) const;
uint16 GetUInt16Value(uint16 index, uint8 offset) const;
- ObjectGuid const& GetGuidValue(uint16 index) const;
+ ObjectGuid GetGuidValue(uint16 index) const;
void SetInt32Value(uint16 index, int32 value);
void SetUInt32Value(uint16 index, uint32 value);
@@ -140,11 +140,12 @@ class Object
void SetByteValue(uint16 index, uint8 offset, uint8 value);
void SetUInt16Value(uint16 index, uint8 offset, uint16 value);
void SetInt16Value(uint16 index, uint8 offset, int16 value) { SetUInt16Value(index, offset, (uint16)value); }
+ void SetGuidValue(uint16 index, ObjectGuid value);
void SetStatFloatValue(uint16 index, float value);
void SetStatInt32Value(uint16 index, int32 value);
- bool AddUInt64Value(uint16 index, uint64 value);
- bool RemoveUInt64Value(uint16 index, uint64 value);
+ bool AddGuidValue(uint16 index, ObjectGuid value);
+ bool RemoveGuidValue(uint16 index, ObjectGuid value);
void ApplyModUInt32Value(uint16 index, int32 val, bool apply);
void ApplyModInt32Value(uint16 index, int32 val, bool apply);
@@ -384,7 +385,7 @@ ByteBuffer& operator<<(ByteBuffer& buf, Position::PositionXYZOStreamer const& st
struct MovementInfo
{
// common
- uint64 guid;
+ ObjectGuid guid;
uint32 flags;
uint16 flags2;
Position pos;
@@ -395,14 +396,14 @@ struct MovementInfo
{
void Reset()
{
- guid = 0;
+ guid.Clear();
pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f);
seat = -1;
time = 0;
time2 = 0;
}
- uint64 guid;
+ ObjectGuid guid;
Position pos;
int8 seat;
uint32 time;
@@ -431,7 +432,7 @@ struct MovementInfo
float splineElevation;
MovementInfo() :
- guid(0), flags(0), flags2(0), time(0), pitch(0.0f), fallTime(0), splineElevation(0.0f)
+ guid(), flags(0), flags2(0), time(0), pitch(0.0f), fallTime(0), splineElevation(0.0f)
{
pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f);
transport.Reset();
@@ -638,7 +639,7 @@ class WorldObject : public Object, public WorldLocation
void PlayDistanceSound(uint32 sound_id, Player* target = NULL);
void PlayDirectSound(uint32 sound_id, Player* target = NULL);
- void SendObjectDeSpawnAnim(uint64 guid);
+ void SendObjectDeSpawnAnim(ObjectGuid guid);
virtual void SaveRespawnTime() { }
void AddObjectToRemoveList();
@@ -725,7 +726,7 @@ class WorldObject : public Object, public WorldLocation
float GetTransOffsetO() const { return m_movementInfo.transport.pos.GetOrientation(); }
uint32 GetTransTime() const { return m_movementInfo.transport.time; }
int8 GetTransSeat() const { return m_movementInfo.transport.seat; }
- virtual uint64 GetTransGUID() const;
+ virtual ObjectGuid GetTransGUID() const;
void SetTransport(Transport* t) { m_transport = t; }
MovementInfo m_movementInfo;
diff --git a/src/server/game/Entities/Object/ObjectDefines.h b/src/server/game/Entities/Object/ObjectDefines.h
index 1ccedbaaf9f..3b7709bc1f1 100644
--- a/src/server/game/Entities/Object/ObjectDefines.h
+++ b/src/server/game/Entities/Object/ObjectDefines.h
@@ -31,35 +31,6 @@ inline uint32 MAKE_PAIR32(uint16 l, uint16 h);
inline uint16 PAIR32_HIPART(uint32 x);
inline uint16 PAIR32_LOPART(uint32 x);
-inline bool IS_EMPTY_GUID(uint64 guid);
-inline bool IS_CREATURE_GUID(uint64 guid);
-inline bool IS_PET_GUID(uint64 guid);
-inline bool IS_VEHICLE_GUID(uint64 guid);
-inline bool IS_CRE_OR_VEH_GUID(uint64 guid);
-inline bool IS_CRE_OR_VEH_OR_PET_GUID(uint64 guid);
-inline bool IS_PLAYER_GUID(uint64 guid);
-inline bool IS_UNIT_GUID(uint64 guid);
-inline bool IS_ITEM_GUID(uint64 guid);
-inline bool IS_GAMEOBJECT_GUID(uint64 guid);
-inline bool IS_DYNAMICOBJECT_GUID(uint64 guid);
-inline bool IS_CORPSE_GUID(uint64 guid);
-inline bool IS_TRANSPORT_GUID(uint64 guid);
-inline bool IS_MO_TRANSPORT_GUID(uint64 guid);
-inline bool IS_GROUP_GUID(uint64 guid);
-
-// l - OBJECT_FIELD_GUID
-// e - OBJECT_FIELD_ENTRY for GO (except GAMEOBJECT_TYPE_MO_TRANSPORT) and creatures or UNIT_FIELD_PETNUMBER for pets
-// h - OBJECT_FIELD_GUID + 1
-inline uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h);
-
-//#define GUID_HIPART(x) (uint32)((uint64(x) >> 52)) & 0x0000FFFF)
-inline uint32 GUID_HIPART(uint64 guid);
-inline uint32 GUID_ENPART(uint64 x);
-inline uint32 GUID_LOPART(uint64 x);
-
-inline bool IsGuidHaveEnPart(uint64 guid);
-inline char const* GetLogNameForGuid(uint64 guid);
-
uint64 MAKE_PAIR64(uint32 l, uint32 h)
{
return uint64(l | (uint64(h) << 32));
@@ -95,144 +66,4 @@ uint16 PAIR32_LOPART(uint32 x)
return (uint16)(x & 0x0000FFFF);
}
-bool IS_EMPTY_GUID(uint64 guid)
-{
- return guid == 0;
-}
-
-bool IS_CREATURE_GUID(uint64 guid)
-{
- return GUID_HIPART(guid) == HIGHGUID_UNIT;
-}
-
-bool IS_PET_GUID(uint64 guid)
-{
- return GUID_HIPART(guid) == HIGHGUID_PET;
-}
-
-bool IS_VEHICLE_GUID(uint64 guid)
-{
- return GUID_HIPART(guid) == HIGHGUID_VEHICLE;
-}
-
-bool IS_CRE_OR_VEH_GUID(uint64 guid)
-{
- return IS_CREATURE_GUID(guid) || IS_VEHICLE_GUID(guid);
-}
-
-bool IS_CRE_OR_VEH_OR_PET_GUID(uint64 guid)
-{
- return IS_CRE_OR_VEH_GUID(guid) || IS_PET_GUID(guid);
-}
-
-bool IS_PLAYER_GUID(uint64 guid)
-{
- return guid != 0 && GUID_HIPART(guid) == HIGHGUID_PLAYER;
-}
-
-bool IS_UNIT_GUID(uint64 guid)
-{
- return IS_CRE_OR_VEH_OR_PET_GUID(guid) || IS_PLAYER_GUID(guid);
-}
-
-bool IS_ITEM_GUID(uint64 guid)
-{
- return GUID_HIPART(guid) == HIGHGUID_ITEM;
-}
-
-bool IS_GAMEOBJECT_GUID(uint64 guid)
-{
- return GUID_HIPART(guid) == HIGHGUID_GAMEOBJECT;
-}
-
-bool IS_DYNAMICOBJECT_GUID(uint64 guid)
-{
- return GUID_HIPART(guid) == HIGHGUID_DYNAMICOBJECT;
-}
-
-bool IS_CORPSE_GUID(uint64 guid)
-{
- return GUID_HIPART(guid) == HIGHGUID_CORPSE;
-}
-
-bool IS_TRANSPORT_GUID(uint64 guid)
-{
- return GUID_HIPART(guid) == HIGHGUID_TRANSPORT;
-}
-
-bool IS_MO_TRANSPORT_GUID(uint64 guid)
-{
- return GUID_HIPART(guid) == HIGHGUID_MO_TRANSPORT;
-}
-
-bool IS_GROUP_GUID(uint64 guid)
-{
- return GUID_HIPART(guid) == HIGHGUID_GROUP;
-}
-
-uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
-{
- return uint64(uint64(l) | (uint64(e) << 24) | (uint64(h) << 48));
-}
-
-uint32 GUID_HIPART(uint64 guid)
-{
- return (uint32)((uint64(guid) >> 48) & 0x0000FFFF);
-}
-
-uint32 GUID_ENPART(uint64 x)
-{
- return IsGuidHaveEnPart(x)
- ? (uint32)((x >> 24) & UI64LIT(0x0000000000FFFFFF))
- : 0;
-}
-
-uint32 GUID_LOPART(uint64 x)
-{
- return IsGuidHaveEnPart(x)
- ? (uint32)(x & UI64LIT(0x0000000000FFFFFF))
- : (uint32)(x & UI64LIT(0x00000000FFFFFFFF));
-}
-
-bool IsGuidHaveEnPart(uint64 guid)
-{
- switch (GUID_HIPART(guid))
- {
- case HIGHGUID_ITEM:
- case HIGHGUID_PLAYER:
- case HIGHGUID_DYNAMICOBJECT:
- case HIGHGUID_CORPSE:
- case HIGHGUID_GROUP:
- return false;
- case HIGHGUID_GAMEOBJECT:
- case HIGHGUID_TRANSPORT:
- case HIGHGUID_UNIT:
- case HIGHGUID_PET:
- case HIGHGUID_VEHICLE:
- case HIGHGUID_MO_TRANSPORT:
- default:
- return true;
- }
-}
-
-char const* GetLogNameForGuid(uint64 guid)
-{
- switch (GUID_HIPART(guid))
- {
- case HIGHGUID_ITEM: return "item";
- case HIGHGUID_PLAYER: return guid ? "player" : "none";
- case HIGHGUID_GAMEOBJECT: return "gameobject";
- case HIGHGUID_TRANSPORT: return "transport";
- case HIGHGUID_UNIT: return "creature";
- case HIGHGUID_PET: return "pet";
- case HIGHGUID_VEHICLE: return "vehicle";
- case HIGHGUID_DYNAMICOBJECT:return "dynobject";
- case HIGHGUID_CORPSE: return "corpse";
- case HIGHGUID_MO_TRANSPORT: return "mo_transport";
- case HIGHGUID_GROUP: return "group";
- default:
- return "<unknown>";
- }
-}
-
#endif
diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp
index 68e6ca1b3ce..63d2b5c2dae 100644
--- a/src/server/game/Entities/Object/ObjectGuid.cpp
+++ b/src/server/game/Entities/Object/ObjectGuid.cpp
@@ -20,6 +20,9 @@
#include "World.h"
#include "ObjectMgr.h"
#include <sstream>
+#include <iomanip>
+
+ObjectGuid const ObjectGuid::Empty = ObjectGuid();
char const* ObjectGuid::GetTypeName(HighGuid high)
{
@@ -45,19 +48,12 @@ char const* ObjectGuid::GetTypeName(HighGuid high)
std::string ObjectGuid::ToString() const
{
std::ostringstream str;
- str << GetTypeName();
-
- if (IsPlayer())
- {
- std::string name;
- if (sObjectMgr->GetPlayerNameByGUID(m_guid, name))
- str << " " << name;
- }
-
- str << " (";
+ str << "GUID Full: 0x" << std::hex << std::setw(16) << std::setfill('0') << m_guid;
+ str << " Type: " << GetTypeName();
if (HasEntry())
- str << (IsPet() ? "Petnumber: " : "Entry: ") << GetEntry() << " ";
- str << "Guid: " << GetCounter() << ")";
+ str << (IsPet() ? " Pet number: " : " Entry: ") << GetEntry() << " ";
+
+ str << " Low: " << GetCounter();
return str.str();
}
diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h
index a073113db90..f1966007d74 100644
--- a/src/server/game/Entities/Object/ObjectGuid.h
+++ b/src/server/game/Entities/Object/ObjectGuid.h
@@ -79,13 +79,15 @@ struct PackedGuidReader
class ObjectGuid
{
- public: // constructors
+ public:
+ static ObjectGuid const Empty;
+
ObjectGuid() : m_guid(0) {}
explicit ObjectGuid(uint64 guid) : m_guid(guid) {}
ObjectGuid(HighGuid hi, uint32 entry, uint32 counter) : m_guid(counter ? uint64(counter) | (uint64(entry) << 24) | (uint64(hi) << 48) : 0) {}
ObjectGuid(HighGuid hi, uint32 counter) : m_guid(counter ? uint64(counter) | (uint64(hi) << 48) : 0) {}
- //operator uint64() const { return m_guid; }
+ explicit operator uint64() const { return m_guid; }
PackedGuidReader ReadAsPacked() { return PackedGuidReader(*this); }
void Set(uint64 guid) { m_guid = guid; }
@@ -94,7 +96,7 @@ class ObjectGuid
PackedGuid WriteAsPacked() const;
uint64 GetRawValue() const { return m_guid; }
- HighGuid GetHigh() const { return HighGuid((m_guid >> 48) & 0x00000FFF); }
+ HighGuid GetHigh() const { return HighGuid((m_guid >> 48) & 0x0000FFFF); }
uint32 GetEntry() const { return HasEntry() ? uint32((m_guid >> 24) & UI64LIT(0x0000000000FFFFFF)) : 0; }
uint32 GetCounter() const
{
@@ -112,23 +114,24 @@ class ObjectGuid
uint32 GetMaxCounter() const { return GetMaxCounter(GetHigh()); }
- bool IsEmpty() const { return m_guid == 0; }
- bool IsCreature() const { return GetHigh() == HIGHGUID_UNIT; }
- bool IsPet() const { return GetHigh() == HIGHGUID_PET; }
- bool IsVehicle() const { return GetHigh() == HIGHGUID_VEHICLE; }
- bool IsCreatureOrPet() const { return IsCreature() || IsPet(); }
- bool IsCreatureOrVehicle() const { return IsCreature() || IsVehicle(); }
- bool IsAnyTypeCreature() const { return IsCreature() || IsPet() || IsVehicle(); }
+ bool IsEmpty() const { return m_guid == 0; }
+ bool IsCreature() const { return GetHigh() == HIGHGUID_UNIT; }
+ bool IsPet() const { return GetHigh() == HIGHGUID_PET; }
+ bool IsVehicle() const { return GetHigh() == HIGHGUID_VEHICLE; }
+ bool IsCreatureOrPet() const { return IsCreature() || IsPet(); }
+ bool IsCreatureOrVehicle() const { return IsCreature() || IsVehicle(); }
+ bool IsAnyTypeCreature() const { return IsCreature() || IsPet() || IsVehicle(); }
bool IsPlayer() const { return !IsEmpty() && GetHigh() == HIGHGUID_PLAYER; }
- bool IsUnit() const { return IsAnyTypeCreature() || IsPlayer(); }
- bool IsItem() const { return GetHigh() == HIGHGUID_ITEM; }
- bool IsGameObject() const { return GetHigh() == HIGHGUID_GAMEOBJECT; }
- bool IsDynamicObject() const { return GetHigh() == HIGHGUID_DYNAMICOBJECT; }
- bool IsCorpse() const { return GetHigh() == HIGHGUID_CORPSE; }
- bool IsTransport() const { return GetHigh() == HIGHGUID_TRANSPORT; }
- bool IsMOTransport() const { return GetHigh() == HIGHGUID_MO_TRANSPORT; }
- bool IsInstance() const { return GetHigh() == HIGHGUID_INSTANCE; }
- bool IsGroup() const { return GetHigh() == HIGHGUID_GROUP; }
+ bool IsUnit() const { return IsAnyTypeCreature() || IsPlayer(); }
+ bool IsItem() const { return GetHigh() == HIGHGUID_ITEM; }
+ bool IsGameObject() const { return GetHigh() == HIGHGUID_GAMEOBJECT; }
+ bool IsDynamicObject() const { return GetHigh() == HIGHGUID_DYNAMICOBJECT; }
+ bool IsCorpse() const { return GetHigh() == HIGHGUID_CORPSE; }
+ bool IsTransport() const { return GetHigh() == HIGHGUID_TRANSPORT; }
+ bool IsMOTransport() const { return GetHigh() == HIGHGUID_MO_TRANSPORT; }
+ bool IsAnyTypeGameObject() const { return IsGameObject() || IsTransport() || IsMOTransport(); }
+ bool IsInstance() const { return GetHigh() == HIGHGUID_INSTANCE; }
+ bool IsGroup() const { return GetHigh() == HIGHGUID_GROUP; }
static TypeID GetTypeId(HighGuid high)
{
@@ -153,7 +156,7 @@ class ObjectGuid
TypeID GetTypeId() const { return GetTypeId(GetHigh()); }
- bool operator!() const { return IsEmpty(); }
+ //bool operator!() const { return IsEmpty(); }
bool operator== (ObjectGuid const& guid) const { return GetRawValue() == guid.GetRawValue(); }
bool operator!= (ObjectGuid const& guid) const { return GetRawValue() != guid.GetRawValue(); }
bool operator< (ObjectGuid const& guid) const { return GetRawValue() < guid.GetRawValue(); }
@@ -194,6 +197,12 @@ class ObjectGuid
uint64 m_guid;
};
+// Some Shared defines
+typedef std::set<ObjectGuid> GuidSet;
+typedef std::list<ObjectGuid> GuidList;
+typedef std::deque<ObjectGuid> GuidDeque;
+typedef std::vector<ObjectGuid> GuidVector;
+
// minimum buffer size for packed guid is 9 bytes
#define PACKED_GUID_MIN_BUFFER_SIZE 9
diff --git a/src/server/game/Entities/Object/Updates/UpdateData.cpp b/src/server/game/Entities/Object/Updates/UpdateData.cpp
index f6ac0bc67cc..98eaa3184e4 100644
--- a/src/server/game/Entities/Object/Updates/UpdateData.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateData.cpp
@@ -27,12 +27,12 @@
UpdateData::UpdateData() : m_blockCount(0) { }
-void UpdateData::AddOutOfRangeGUID(std::set<uint64>& guids)
+void UpdateData::AddOutOfRangeGUID(GuidSet& guids)
{
m_outOfRangeGUIDs.insert(guids.begin(), guids.end());
}
-void UpdateData::AddOutOfRangeGUID(uint64 guid)
+void UpdateData::AddOutOfRangeGUID(ObjectGuid guid)
{
m_outOfRangeGUIDs.insert(guid);
}
@@ -109,13 +109,11 @@ bool UpdateData::BuildPacket(WorldPacket* packet)
if (!m_outOfRangeGUIDs.empty())
{
- buf << (uint8) UPDATETYPE_OUT_OF_RANGE_OBJECTS;
- buf << (uint32) m_outOfRangeGUIDs.size();
+ buf << uint8(UPDATETYPE_OUT_OF_RANGE_OBJECTS);
+ buf << uint32(m_outOfRangeGUIDs.size());
- for (std::set<uint64>::const_iterator i = m_outOfRangeGUIDs.begin(); i != m_outOfRangeGUIDs.end(); ++i)
- {
- buf.appendPackGUID(*i);
- }
+ for (GuidSet::const_iterator i = m_outOfRangeGUIDs.begin(); i != m_outOfRangeGUIDs.end(); ++i)
+ buf << i->WriteAsPacked();
}
buf.append(m_data);
diff --git a/src/server/game/Entities/Object/Updates/UpdateData.h b/src/server/game/Entities/Object/Updates/UpdateData.h
index 1ec86192fab..57d0c06d376 100644
--- a/src/server/game/Entities/Object/Updates/UpdateData.h
+++ b/src/server/game/Entities/Object/Updates/UpdateData.h
@@ -59,18 +59,18 @@ class UpdateData
{
}
- void AddOutOfRangeGUID(std::set<uint64>& guids);
- void AddOutOfRangeGUID(uint64 guid);
+ void AddOutOfRangeGUID(GuidSet& guids);
+ void AddOutOfRangeGUID(ObjectGuid guid);
void AddUpdateBlock(const ByteBuffer &block);
bool BuildPacket(WorldPacket* packet);
bool HasData() const { return m_blockCount > 0 || !m_outOfRangeGUIDs.empty(); }
void Clear();
- std::set<uint64> const& GetOutOfRangeGUIDs() const { return m_outOfRangeGUIDs; }
+ GuidSet const& GetOutOfRangeGUIDs() const { return m_outOfRangeGUIDs; }
protected:
uint32 m_blockCount;
- std::set<uint64> m_outOfRangeGUIDs;
+ GuidSet m_outOfRangeGUIDs;
ByteBuffer m_data;
void Compress(void* dst, uint32 *dst_size, void* src, int src_size);