public static void SerializeDelta(Stream stream, CreateBuilding instance, CreateBuilding previous) { MemoryStream memoryStream = Pool.Get <MemoryStream>(); if (instance.entity != previous.entity) { stream.WriteByte(8); ProtocolParser.WriteUInt32(stream, instance.entity); } if (instance.socket != previous.socket) { stream.WriteByte(16); ProtocolParser.WriteUInt32(stream, instance.socket); } stream.WriteByte(24); ProtocolParser.WriteBool(stream, instance.onterrain); if (instance.position != previous.position) { stream.WriteByte(34); memoryStream.SetLength((long)0); Vector3Serialized.SerializeDelta(memoryStream, instance.position, previous.position); uint length = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, length); stream.Write(memoryStream.GetBuffer(), 0, (int)length); } if (instance.normal != previous.normal) { stream.WriteByte(42); memoryStream.SetLength((long)0); Vector3Serialized.SerializeDelta(memoryStream, instance.normal, previous.normal); uint num = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, num); stream.Write(memoryStream.GetBuffer(), 0, (int)num); } stream.WriteByte(50); memoryStream.SetLength((long)0); RaySerialized.SerializeDelta(memoryStream, instance.ray, previous.ray); uint length1 = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, length1); stream.Write(memoryStream.GetBuffer(), 0, (int)length1); if (instance.blockID != previous.blockID) { stream.WriteByte(56); ProtocolParser.WriteUInt32(stream, instance.blockID); } if (instance.rotation != previous.rotation) { stream.WriteByte(66); memoryStream.SetLength((long)0); Vector3Serialized.SerializeDelta(memoryStream, instance.rotation, previous.rotation); uint num1 = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, num1); stream.Write(memoryStream.GetBuffer(), 0, (int)num1); } Pool.FreeMemoryStream(ref memoryStream); }
public static CreateBuilding Deserialize(Stream stream, CreateBuilding instance, bool isDelta) { while (true) { int num = stream.ReadByte(); if (num == -1) { break; } if (num <= 34) { if (num <= 16) { if (num == 8) { instance.entity = ProtocolParser.ReadUInt32(stream); continue; } else if (num == 16) { instance.socket = ProtocolParser.ReadUInt32(stream); continue; } } else if (num == 24) { instance.onterrain = ProtocolParser.ReadBool(stream); continue; } else if (num == 34) { Vector3Serialized.DeserializeLengthDelimited(stream, ref instance.position, isDelta); continue; } } else if (num <= 50) { if (num == 42) { Vector3Serialized.DeserializeLengthDelimited(stream, ref instance.normal, isDelta); continue; } else if (num == 50) { RaySerialized.DeserializeLengthDelimited(stream, ref instance.ray, isDelta); continue; } } else if (num == 56) { instance.blockID = ProtocolParser.ReadUInt32(stream); continue; } else if (num == 66) { Vector3Serialized.DeserializeLengthDelimited(stream, ref instance.rotation, isDelta); continue; } Key key = ProtocolParser.ReadKey((byte)num, stream); if (key.Field == 0) { throw new ProtocolBufferException("Invalid field id: 0, something went wrong in the stream"); } ProtocolParser.SkipKey(stream, key); } return(instance); }