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.

108 lines
4.5KB

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