Mirror of Svelto.ECS because we're a fan of it
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 lines
1.3KB

  1. using Svelto.Common;
  2. namespace Svelto.ECS.Serialization
  3. {
  4. //TODO: Unit test. Delete this comment once Unit test is written
  5. #if ENABLE_IL2CPP
  6. [UnityEngine.Scripting.Preserve]
  7. #endif
  8. public class DefaultVersioningFactory<T> : IDeserializationFactory where T : ISerializableEntityDescriptor, new()
  9. {
  10. public EntityInitializer BuildDeserializedEntity(EGID egid, ISerializationData serializationData,
  11. ISerializableEntityDescriptor entityDescriptor, int serializationType,
  12. IEntitySerialization entitySerialization, IEntityFactory factory, bool enginesRootIsDeserializationOnly)
  13. {
  14. var newEntityDescriptor = EntityDescriptorTemplate<T>.realDescriptor as ISerializableEntityDescriptor;
  15. var entityDescriptorEntitiesToSerialize = enginesRootIsDeserializationOnly
  16. ? newEntityDescriptor.componentsToSerialize
  17. : newEntityDescriptor.componentsToBuild;
  18. var initializer = (factory as IEntitySerializationFactory).BuildEntity(egid, entityDescriptorEntitiesToSerialize, TypeCache<T>.type);
  19. entitySerialization.DeserializeEntityComponents(serializationData, entityDescriptor, ref initializer,
  20. serializationType);
  21. return initializer;
  22. }
  23. }
  24. }