/// <summary> /// Serializes id to hash list. /// Server sends the hashlist to client, client reorders type table to same order as server. /// </summary> public void Serialize(BitStream stream) { if (stream.Writing) { stream.WriteVariant((uint)m_idToType.Count); for (int i = 0; i < m_idToType.Count; i++) { stream.WriteInt32(m_idToType[i].TypeHash); } } else { int count = (int)stream.ReadUInt32Variant(); Debug.Assert(m_idToType.Count == count, "Number of received types does not match number of registered types"); m_staticEventTable = new MyEventTable(null); for (int i = 0; i < count; i++) { int typeHash = stream.ReadInt32(); Debug.Assert(m_hashLookup.ContainsKey(typeHash), "Type hash not found!"); var type = m_hashLookup[typeHash]; m_idToType[i] = type; m_staticEventTable.AddStaticEvents(type.Type); } } }
public MySynchronizedTypeInfo(Type type, TypeId id, MySynchronizedTypeInfo baseType, bool isReplicated) { Type = type; TypeId = id; TypeHash = GetHashFromType(type); TypeName = type.Name; FullTypeName = type.FullName; BaseType = baseType; IsReplicated = isReplicated; EventTable = new MyEventTable(this); }