public virtual void WriteToStreamDelta(Stream stream, PlayerInventory previous) { if (previous == null) { PlayerInventory.Serialize(stream, this); return; } PlayerInventory.SerializeDelta(stream, this, previous); }
public static void SerializeDelta(Stream stream, BasePlayer instance, BasePlayer previous) { MemoryStream memoryStream = Pool.Get <MemoryStream>(); if (instance.name != null && instance.name != previous.name) { stream.WriteByte(10); ProtocolParser.WriteString(stream, instance.name); } if (instance.userid != previous.userid) { stream.WriteByte(16); ProtocolParser.WriteUInt64(stream, instance.userid); } if (instance.inventory != null) { stream.WriteByte(26); memoryStream.SetLength((long)0); PlayerInventory.SerializeDelta(memoryStream, instance.inventory, previous.inventory); uint length = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, length); stream.Write(memoryStream.GetBuffer(), 0, (int)length); } if (instance.metabolism != null) { stream.WriteByte(34); memoryStream.SetLength((long)0); PlayerMetabolism.SerializeDelta(memoryStream, instance.metabolism, previous.metabolism); uint num = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, num); stream.Write(memoryStream.GetBuffer(), 0, (int)num); } if (instance.modelState != null) { stream.WriteByte(50); memoryStream.SetLength((long)0); ModelState.SerializeDelta(memoryStream, instance.modelState, previous.modelState); uint length1 = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, length1); stream.Write(memoryStream.GetBuffer(), 0, (int)length1); } if (instance.playerFlags != previous.playerFlags) { stream.WriteByte(56); ProtocolParser.WriteUInt64(stream, (ulong)instance.playerFlags); } if (instance.heldEntity != previous.heldEntity) { stream.WriteByte(64); ProtocolParser.WriteUInt32(stream, instance.heldEntity); } if (instance.health != previous.health) { stream.WriteByte(77); ProtocolParser.WriteSingle(stream, instance.health); } if (instance.persistantData != null) { stream.WriteByte(82); memoryStream.SetLength((long)0); PersistantPlayer.SerializeDelta(memoryStream, instance.persistantData, previous.persistantData); uint num1 = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, num1); stream.Write(memoryStream.GetBuffer(), 0, (int)num1); } if (instance.skinCol != previous.skinCol) { stream.WriteByte(125); ProtocolParser.WriteSingle(stream, instance.skinCol); } if (instance.skinTex != previous.skinTex) { stream.WriteByte(133); stream.WriteByte(1); ProtocolParser.WriteSingle(stream, instance.skinTex); } if (instance.skinMesh != previous.skinMesh) { stream.WriteByte(141); stream.WriteByte(1); ProtocolParser.WriteSingle(stream, instance.skinMesh); } if (instance.currentLife != null) { stream.WriteByte(162); stream.WriteByte(1); memoryStream.SetLength((long)0); PlayerLifeStory.SerializeDelta(memoryStream, instance.currentLife, previous.currentLife); uint length2 = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, length2); stream.Write(memoryStream.GetBuffer(), 0, (int)length2); } if (instance.previousLife != null) { stream.WriteByte(170); stream.WriteByte(1); memoryStream.SetLength((long)0); PlayerLifeStory.SerializeDelta(memoryStream, instance.previousLife, previous.previousLife); uint num2 = (uint)memoryStream.Length; ProtocolParser.WriteUInt32(stream, num2); stream.Write(memoryStream.GetBuffer(), 0, (int)num2); } if (instance.mounted != previous.mounted) { stream.WriteByte(176); stream.WriteByte(1); ProtocolParser.WriteUInt32(stream, instance.mounted); } if (instance.currentTeam != previous.currentTeam) { stream.WriteByte(184); stream.WriteByte(1); ProtocolParser.WriteUInt64(stream, instance.currentTeam); } Pool.FreeMemoryStream(ref memoryStream); }