public override void Deserialize(Bitstream msg)
{
SnapId = msg.ReadUInt32();
BaselineId = msg.ReadUInt32();
ushort count = msg.ReadByte();
Dictionary<int, NetworkObject> state = new Dictionary<int, NetworkObject>();
int addDeltaCount = 0;
for (int i=0; i < count; ++i)
{
ushort objTypeId = msg.ReadByte();
var entId = msg.ReadVariableUInt32();
NetworkObject obj = ObjectMapper.Lookup(entId, objTypeId, true);
if (obj == null)
{
obj = ObjectMapper.Create(entId, objTypeId);
}
NetworkObject realObj = ObjectMapper.Lookup(entId, objTypeId, false);
var realHash = 0;
if (realObj != null)
realHash = realObj.GetHashCode();
NetworkObject baseline = null;
var usebaseLine = msg.ReadBool();
uint bOffset = 0;
if (usebaseLine)
{
byte offset = msg.ReadByte();
var objBaselineId = BaselineId - (uint)offset;
bOffset = objBaselineId;
baseline = ObjectMapper.GetBaseline(objBaselineId, realHash);
}
var ownerType = obj.GetType().GetTypeInfo();
var dItem = DataLookupTable.Get(ownerType);
ReadNetObject(dItem, msg, obj, baseline);
ObjectMapper.AddDeltaState(realHash, SnapId, obj);
if (BaselineId != 0 && realHash != 0)
addDeltaCount++;
}
if (addDeltaCount == count)
ObjectMapper.LastSimId = BaselineId;
}