public EntityStructInitializer BuildDeserializedEntity(EGID egid, ISerializationData serializationData, ISerializableEntityDescriptor entityDescriptor, SerializationType serializationType, IEntitySerialization entitySerialization) { var initializer = _factory.BuildEntity <T>(egid, _implementors); entitySerialization.DeserializeEntityStructs(serializationData, entityDescriptor, ref initializer, serializationType); return(initializer); }
public EntityInitializer BuildDeserializedEntity (EGID egid, ISerializationData serializationData, ISerializableEntityDescriptor entityDescriptor , int serializationType, IEntitySerialization entitySerialization, IEntityFactory factory , bool enginesRootIsDeserializationOnly) { var entityDescriptorEntitiesToSerialize = enginesRootIsDeserializationOnly ? entityDescriptor.componentsToSerialize : entityDescriptor.componentsToBuild; var initializer = factory.BuildEntity(egid, entityDescriptorEntitiesToSerialize, TypeCache <T> .type, _implementors); entitySerialization.DeserializeEntityComponents(serializationData, entityDescriptor, ref initializer , serializationType); return(initializer); }
void RegisterEntityDescriptor(ISerializableEntityDescriptor descriptor) { if (descriptor == null) { return; } uint descriptorHash = descriptor.hash; #if DEBUG && !PROFILE_SVELTO if (_descriptors.ContainsKey(descriptorHash)) { throw new Exception($"Hash Collision of '{descriptor.GetType()}' against " + $"'{_descriptors[descriptorHash]} ::: {descriptorHash}'"); } #endif _descriptors[descriptorHash] = descriptor; }
static void RegisterEntityDescriptor(ISerializableEntityDescriptor descriptor, Type type, Type d1) { if (descriptor == null) { return; } uint descriptorHash = descriptor.hash; #if DEBUG && !PROFILE_SVELTO if (_descriptors.ContainsKey(descriptorHash)) { throw new Exception($"Hash Collision of '{descriptor.GetType()}' against " + $"'{_descriptors[descriptorHash]} ::: {descriptorHash}'"); } #endif _descriptors[descriptorHash] = descriptor; Type[] typeArgs = { type }; var makeGenericType = d1.MakeGenericType(typeArgs); var instance = Activator.CreateInstance(makeGenericType); _defaultFactories.Add(descriptorHash, instance as IDeserializationFactory); }