示例#1
0
        public void WriteCompleteDynamicFieldUpdateMask(int size, WorldPacket data)
        {
            data.WriteBits(size, 32);
            if (size > 32)
            {
                if (data.HasUnfinishedBitPack())
                {
                    for (int block = 0; block < size / 32; ++block)
                    {
                        data.WriteBits(0xFFFFFFFFu, 32);
                    }
                }
                else
                {
                    for (int block = 0; block < size / 32; ++block)
                    {
                        data.WriteUInt32(0xFFFFFFFFu);
                    }
                }
            }
            else if (size == 32)
            {
                data.WriteBits(0xFFFFFFFFu, 32);
                return;
            }

            if ((size % 32) != 0)
            {
                data.WriteBits(0xFFFFFFFFu, size % 32);
            }
        }
示例#2
0
        public void WriteUpdateMask(WorldPacket data)
        {
            data.WriteBits(_values.Count, 32);
            if (_values.Count > 32)
            {
                if (data.HasUnfinishedBitPack())
                {
                    for (int block = 0; block < _values.Count / 32; ++block)
                    {
                        data.WriteBits(_updateMask[block], 32);
                    }
                }
                else
                {
                    for (int block = 0; block < _values.Count / 32; ++block)
                    {
                        data.WriteUInt32(_updateMask[block]);
                    }
                }
            }

            else if (_values.Count == 32)
            {
                data.WriteBits(_updateMask.Last(), 32);
                return;
            }

            if ((_values.Count % 32) != 0)
            {
                data.WriteBits(_updateMask.Last(), _values.Count % 32);
            }
        }