public override void Serialize(Bitstream msg)
{
var count = State.Count;
msg.Write((ushort)State.Count);
if (count > 0 && _ownerType == null)
{
_ownerType = State[0].GetType();
_lookupItem = DataLookupTable.Get(_ownerType.GetTypeInfo());
}
if (count > 0)
{
ushort objTypeId = ObjectMapper.LookupType(_ownerType);
msg.Write((byte)objTypeId);
msg.WriteVariableUInt32(PlayerId);
}
PlayerStateData pState = PreviousState;
foreach (var o in State)
{
DataObjectPacket.WriteNetObject(_lookupItem, msg, o, pState);
pState = o;
}
}