Created
February 13, 2015 00:10
-
-
Save DDuarte/4f063dfbddb79f6b911a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h | |
index 25e6f27..518a57b 100644 | |
--- a/src/server/game/Server/Packets/PacketUtilities.h | |
+++ b/src/server/game/Server/Packets/PacketUtilities.h | |
@@ -36,6 +36,7 @@ namespace WorldPackets | |
{ | |
public: | |
uint32 GetMask() const { return _mask; } | |
+ void SetMask(uint32 mask) { _mask = mask; } | |
T const& operator[](size_t index) const { return _contents.at(index); } | |
size_t GetSize() const { return _contents.size(); } | |
@@ -49,6 +50,12 @@ namespace WorldPackets | |
_contents[index] = value; | |
} | |
+ void Insert(T const& value) | |
+ { | |
+ ASSERT(_mask != 0); | |
+ _contents.push_back(value); | |
+ } | |
+ | |
void Clear() | |
{ | |
_mask = 0; | |
@@ -73,4 +80,25 @@ namespace WorldPackets | |
return data; | |
} | |
+ | |
+ template <typename T> | |
+ ByteBuffer& operator>>(ByteBuffer& data, CompactArray<T>& v) | |
+ { | |
+ uint32 mask; | |
+ data << uint32(mask); | |
+ | |
+ v.SetMask(mask); | |
+ | |
+ for (size_t i = 0; i < 8; ++i) | |
+ { | |
+ if ((mask & (1u << (i - 1))) != 0) | |
+ { | |
+ T value; | |
+ data >> value; | |
+ v.Insert(value); | |
+ } | |
+ } | |
+ | |
+ return data; | |
+ } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment