diff --git a/src/object/client/Mirror.cpp b/src/object/client/Mirror.cpp index 75554a5..f07937a 100644 --- a/src/object/client/Mirror.cpp +++ b/src/object/client/Mirror.cpp @@ -229,3 +229,20 @@ int32_t FillInPartialObjectData(CGObject_C* object, WOWGUID guid, CDataStore* ms return 1; } + +int32_t SkipPartialObjectUpdate(CDataStore* msg) { + uint8_t changeMaskCount; + uint32_t changeMasks[MAX_CHANGE_MASKS]; + if (!ExtractDirtyMasks(msg, &changeMaskCount, changeMasks)) { + return 0; + } + + for (int32_t block = 0; block < changeMaskCount * 32; block++) { + if (IsMaskBitSet(changeMasks, block)) { + uint32_t blockValue; + msg->Get(blockValue); + } + } + + return 1; +} diff --git a/src/object/client/Mirror.hpp b/src/object/client/Mirror.hpp index c094dae..7af7b38 100644 --- a/src/object/client/Mirror.hpp +++ b/src/object/client/Mirror.hpp @@ -11,4 +11,6 @@ int32_t CallMirrorHandlers(CDataStore* msg, bool a2, WOWGUID guid); int32_t FillInPartialObjectData(CGObject_C* object, WOWGUID guid, CDataStore* msg, bool forFullUpdate, bool zeroZeroBits); +int32_t SkipPartialObjectUpdate(CDataStore* msg); + #endif diff --git a/src/object/client/Util.cpp b/src/object/client/Util.cpp index 1d6f076..e560a15 100644 --- a/src/object/client/Util.cpp +++ b/src/object/client/Util.cpp @@ -164,8 +164,3 @@ void InitObject(CGObject_C* object, uint32_t time, CClientObjCreate& objCreate) } } } - -int32_t SkipPartialObjectUpdate(CDataStore* msg) { - // TODO - return 0; -} diff --git a/src/object/client/Util.hpp b/src/object/client/Util.hpp index 9a833ec..b39c6db 100644 --- a/src/object/client/Util.hpp +++ b/src/object/client/Util.hpp @@ -20,6 +20,4 @@ void HandleObjectOutOfRangePass2(CGObject_C* object); void InitObject(CGObject_C* object, uint32_t time, CClientObjCreate& objCreate); -int32_t SkipPartialObjectUpdate(CDataStore* msg); - #endif