public void Serialize(BitStream stream) { stream.WriteUInt(MessageNumber); stream.WriteBits(new[] { (byte)Reliability }, 3); if (Reliability == PacketReliability.UnreliableSequenced || Reliability == PacketReliability.ReliableSequenced || Reliability == PacketReliability.ReliableOrdered) { stream.WriteBits(new[] { OrderingChannel }, 5); stream.WriteUInt(OrderingIndex); } stream.WriteBit(SplitPacket); if (SplitPacket) { stream.WriteUShort(SplitPacketId); stream.WriteUIntCompressed(SplitPacketIndex); stream.WriteUIntCompressed(SplitPacketCount); } stream.WriteUShortCompressed((ushort)BitStream.BytesToBits(Data.Length)); stream.AlignWrite(); stream.Write(Data); }