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.

69 lines
3.1KB

  1. namespace Svelto.ECS.Serialization
  2. {
  3. public interface IEntitySerialization
  4. {
  5. /// <summary>
  6. /// Fill the serializationData of the entitiesToSerialize of this descriptor
  7. /// </summary>
  8. /// <param name="egid"></param>
  9. /// <param name="serializedData"></param>
  10. /// <param name="serializationType"></param>
  11. /// <returns>Size in bytes of the newly instantiated entity</returns>
  12. void SerializeEntity(EGID egid, ISerializationData serializationData, SerializationType serializationType);
  13. /// <summary>
  14. /// Deserialize a serializationData and copy directly onto the appropriate entities
  15. /// </summary>
  16. /// <param name="data"></param>
  17. /// <param name="dataPos"></param>
  18. /// <param name="serializationType"></param>
  19. void DeserializeEntity(ISerializationData serializationData, SerializationType serializationType);
  20. /// <summary>
  21. /// Deserialize a serializationData and copy directly onto the appropriate entities with explicit EGID
  22. /// </summary>
  23. /// <param name="egid"></param>
  24. /// <param name="data"></param>
  25. /// <param name="dataPos"></param>
  26. /// <param name="serializationType"></param>
  27. void DeserializeEntity(EGID egid, ISerializationData serializationData, SerializationType serializationType);
  28. /// <summary>
  29. /// Deserialize a serializationData and copy directly to an previously created EntityStructInitializer
  30. /// </summary>
  31. /// <param name="serializationData"></param>
  32. /// <param name="entityDescriptor"></param>
  33. /// <param name="initializer"></param>
  34. /// <param name="serializationType"></param>
  35. void DeserializeEntityStructs(ISerializationData serializationData,
  36. ISerializableEntityDescriptor entityDescriptor,
  37. ref EntityStructInitializer initializer, SerializationType serializationType);
  38. /// <summary>
  39. /// Contrary to the other Deserialize methods that assume that the entity exists, this method is used to deserialise
  40. /// a new Entity
  41. /// </summary>
  42. /// <param name="egid"></param>
  43. /// <param name="serializationData"></param>
  44. /// <param name="serializationType"></param>
  45. /// <returns></returns>
  46. EntityStructInitializer DeserializeNewEntity(EGID egid, ISerializationData serializationData,
  47. SerializationType serializationType);
  48. /// <summary>
  49. /// Special Entity Swap method that works without knowing the EntityDescriptor to swap
  50. /// </summary>
  51. /// <param name="localEgid"></param>
  52. /// <param name="toEgid"></param>
  53. void DeserializeEntityToSwap(EGID localEgid, EGID toEgid);
  54. /// <summary>
  55. /// Special Entity delete method that works without knowing the EntityDescriptor to delete
  56. /// </summary>
  57. /// <param name="egid"></param>
  58. void DeserializeEntityToDelete(EGID egid);
  59. void RegisterSerializationFactory<T>(IDeserializationFactory deserializationFactory)
  60. where T : ISerializableEntityDescriptor, new();
  61. }
  62. }