public override void Serialize(Bitstream msg)
{
msg.Write(SnapId);
msg.Write(BaselineId);
msg.Write((byte)Objects.Count);
foreach(var obj in Objects)
{
var ownerType = obj.Object.GetType().GetTypeInfo();
ushort objTypeId = ObjectMapper.LookupType(ownerType);
msg.Write((byte)objTypeId);
msg.WriteVariableUInt32(obj.Lookup);
var dItem = DataLookupTable.Get(ownerType);
DeltaWrapper baseline = null;
if (_baselineState != null)
{
_baselineState.TryGetValue(obj.Object.GetHashCode(), out baseline);
}
NetworkObject baselineObj = null;
if (baseline != null)
{
uint offset = BaselineId - baseline.Lookup;
if (offset < Byte.MaxValue && baseline.Object != null)
{
msg.Write(true);
msg.Write((byte)offset);
baselineObj = baseline.Object;
}
}
if (baselineObj == null)
{
msg.Write(false);
}
WriteNetObject(dItem, msg, obj.Object, baselineObj);
}
}