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.

104 lines
3.6KB

  1. namespace Svelto.ECS
  2. {
  3. public abstract class GenericEntityDescriptor<T> : IEntityDescriptor where T : struct, IEntityStruct
  4. {
  5. static readonly IEntityBuilder[] _entityBuilders;
  6. static GenericEntityDescriptor() { _entityBuilders = new IEntityBuilder[] {new EntityBuilder<T>()}; }
  7. public IEntityBuilder[] entitiesToBuild => _entityBuilders;
  8. }
  9. public abstract class GenericEntityDescriptor<T, U> : IEntityDescriptor
  10. where T : struct, IEntityStruct where U : struct, IEntityStruct
  11. {
  12. static readonly IEntityBuilder[] _entityBuilders;
  13. static GenericEntityDescriptor()
  14. {
  15. _entityBuilders = new IEntityBuilder[] {new EntityBuilder<T>(), new EntityBuilder<U>()};
  16. }
  17. public IEntityBuilder[] entitiesToBuild => _entityBuilders;
  18. }
  19. public abstract class GenericEntityDescriptor<T, U, V> : IEntityDescriptor
  20. where T : struct, IEntityStruct where U : struct, IEntityStruct where V : struct, IEntityStruct
  21. {
  22. static readonly IEntityBuilder[] _entityBuilders;
  23. static GenericEntityDescriptor()
  24. {
  25. _entityBuilders = new IEntityBuilder[]
  26. {
  27. new EntityBuilder<T>(),
  28. new EntityBuilder<U>(),
  29. new EntityBuilder<V>()
  30. };
  31. }
  32. public IEntityBuilder[] entitiesToBuild => _entityBuilders;
  33. }
  34. public abstract class GenericEntityDescriptor<T, U, V, W> : IEntityDescriptor
  35. where T : struct, IEntityStruct where U : struct, IEntityStruct where V : struct, IEntityStruct
  36. where W : struct, IEntityStruct
  37. {
  38. static readonly IEntityBuilder[] _entityBuilders;
  39. static GenericEntityDescriptor()
  40. {
  41. _entityBuilders = new IEntityBuilder[]
  42. {
  43. new EntityBuilder<T>(),
  44. new EntityBuilder<U>(),
  45. new EntityBuilder<V>(),
  46. new EntityBuilder<W>()
  47. };
  48. }
  49. public IEntityBuilder[] entitiesToBuild => _entityBuilders;
  50. }
  51. public abstract class GenericEntityDescriptor<T, U, V, W, X> : IEntityDescriptor
  52. where T : struct, IEntityStruct where U : struct, IEntityStruct where V : struct, IEntityStruct
  53. where W : struct, IEntityStruct where X : struct, IEntityStruct
  54. {
  55. static readonly IEntityBuilder[] _entityBuilders;
  56. static GenericEntityDescriptor()
  57. {
  58. _entityBuilders = new IEntityBuilder[]
  59. {
  60. new EntityBuilder<T>(),
  61. new EntityBuilder<U>(),
  62. new EntityBuilder<V>(),
  63. new EntityBuilder<W>(),
  64. new EntityBuilder<X>()
  65. };
  66. }
  67. public IEntityBuilder[] entitiesToBuild => _entityBuilders;
  68. }
  69. public abstract class GenericEntityDescriptor<T, U, V, W, X, Y> : IEntityDescriptor
  70. where T : struct, IEntityStruct where U : struct, IEntityStruct where V : struct, IEntityStruct
  71. where W : struct, IEntityStruct where X : struct, IEntityStruct where Y : struct, IEntityStruct
  72. {
  73. static readonly IEntityBuilder[] _entityBuilders;
  74. static GenericEntityDescriptor()
  75. {
  76. _entityBuilders = new IEntityBuilder[]
  77. {
  78. new EntityBuilder<T>(),
  79. new EntityBuilder<U>(),
  80. new EntityBuilder<V>(),
  81. new EntityBuilder<W>(),
  82. new EntityBuilder<X>(),
  83. new EntityBuilder<Y>()
  84. };
  85. }
  86. public IEntityBuilder[] entitiesToBuild => _entityBuilders;
  87. }
  88. }