diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-07-25 10:38:45 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-07-25 10:38:45 +0200 |
| commit | 21df17fd47d08c3015c9db6434e3659b2591842b (patch) | |
| tree | 2a1168ccdf78e98eecf64179f604d63650580bab /src/server/game/Entities/Object | |
| parent | 7cff7f0fc0321c2f256d7c6bc191df10441b5b3c (diff) | |
Core/Misc: Removed ReadAsPacked/WriteAsPacked methods from ObjectGuid, they are not needed anymore as guids are always written packed
Diffstat (limited to 'src/server/game/Entities/Object')
| -rw-r--r-- | src/server/game/Entities/Object/ObjectGuid.cpp | 43 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/ObjectGuid.h | 17 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateData.cpp | 2 |
3 files changed, 23 insertions, 39 deletions
diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp index 4d607e59d1b..af0513e2d26 100644 --- a/src/server/game/Entities/Object/ObjectGuid.cpp +++ b/src/server/game/Entities/Object/ObjectGuid.cpp @@ -121,31 +121,37 @@ void ObjectGuid::SetRawValue(std::vector<uint8> const& guid) void PackedGuid::Set(ObjectGuid const& guid) { + _packedGuid.clear(); + _packedGuid << guid; +} + +ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid) +{ uint8 lowMask = 0; uint8 highMask = 0; - _packedGuid.clear(); - _packedGuid << uint8(lowMask); - _packedGuid << uint8(highMask); + buf.FlushBits(); // flush any unwritten bits to make wpos return a meaningful value + std::size_t pos = buf.wpos(); + buf << uint8(lowMask); + buf << uint8(highMask); uint8 packed[8]; - if (size_t packedSize = _packedGuid.PackUInt64(guid._low, &lowMask, packed)) - _packedGuid.append(packed, packedSize); - if (size_t packedSize = _packedGuid.PackUInt64(guid._high, &highMask, packed)) - _packedGuid.append(packed, packedSize); + if (size_t packedSize = ByteBuffer::PackUInt64(guid._low, &lowMask, packed)) + buf.append(packed, packedSize); + if (size_t packedSize = ByteBuffer::PackUInt64(guid._high, &highMask, packed)) + buf.append(packed, packedSize); - _packedGuid.put(0, lowMask); - _packedGuid.put(1, highMask); -} + buf.put(pos, lowMask); + buf.put(pos + 1, highMask); -ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid) -{ - buf << guid.WriteAsPacked(); return buf; } ByteBuffer& operator>>(ByteBuffer& buf, ObjectGuid& guid) { - buf >> guid.ReadAsPacked(); + uint8 lowMask, highMask; + buf >> lowMask >> highMask; + buf.ReadPackedUInt64(lowMask, guid._low); + buf.ReadPackedUInt64(highMask, guid._high); return buf; } @@ -155,15 +161,6 @@ ByteBuffer& operator<<(ByteBuffer& buf, PackedGuid const& guid) return buf; } -ByteBuffer& operator>>(ByteBuffer& buf, PackedGuidReader const& guid) -{ - uint8 lowMask, highMask; - buf >> lowMask >> highMask; - buf.ReadPackedUInt64(lowMask, guid.GuidPtr->_low); - buf.ReadPackedUInt64(highMask, guid.GuidPtr->_high); - return buf; -} - std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid) { std::ostringstream tmp; diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index 281bc170c3a..23d6b4f4dde 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -180,19 +180,13 @@ GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILockTicket) class ObjectGuid; class PackedGuid; -struct PackedGuidReader -{ - explicit PackedGuidReader(ObjectGuid& guid) : GuidPtr(&guid) { } - ObjectGuid* GuidPtr; -}; - #pragma pack(push, 1) class ObjectGuid { friend std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid); - friend ByteBuffer& operator>>(ByteBuffer& buf, PackedGuidReader const& guid); - friend class PackedGuid; + friend ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid); + friend ByteBuffer& operator>>(ByteBuffer& buf, ObjectGuid& guid); public: static ObjectGuid const Empty; @@ -212,15 +206,11 @@ class ObjectGuid ObjectGuid() : _low(0), _high(0) { } ObjectGuid(ObjectGuid const&) = default; - PackedGuidReader ReadAsPacked() { return PackedGuidReader(*this); } - std::vector<uint8> GetRawValue() const; void SetRawValue(std::vector<uint8> const& guid); void SetRawValue(uint64 high, uint64 low) { _high = high; _low = low; } void Clear() { _high = 0; _low = 0; } - PackedGuid WriteAsPacked() const; - HighGuid GetHigh() const { return HighGuid((_high >> 58) & 0x3F); } uint32 GetRealmId() const { return uint32((_high >> 42) & 0x1FFF); } uint32 GetMapId() const { return uint32((_high >> 29) & 0x1FFF); } @@ -393,12 +383,9 @@ ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid); ByteBuffer& operator>>(ByteBuffer& buf, ObjectGuid& guid); ByteBuffer& operator<<(ByteBuffer& buf, PackedGuid const& guid); -ByteBuffer& operator>>(ByteBuffer& buf, PackedGuidReader const& guid); std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid); -inline PackedGuid ObjectGuid::WriteAsPacked() const { return PackedGuid(*this); } - namespace std { template<> diff --git a/src/server/game/Entities/Object/Updates/UpdateData.cpp b/src/server/game/Entities/Object/Updates/UpdateData.cpp index 98c3c428b6e..4ceb20d02aa 100644 --- a/src/server/game/Entities/Object/Updates/UpdateData.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateData.cpp @@ -56,7 +56,7 @@ bool UpdateData::BuildPacket(WorldPacket* packet) *packet << uint32(m_outOfRangeGUIDs.size()); for (GuidSet::const_iterator i = m_outOfRangeGUIDs.begin(); i != m_outOfRangeGUIDs.end(); ++i) - *packet << i->WriteAsPacked(); + *packet << *i; } *packet << uint32(m_data.size()); |
