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.

MultiEntityViewsEngine.cs 2.3KB

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using Svelto.ECS.Internal;
  2. namespace Svelto.ECS.Internal
  3. {
  4. public abstract class MultiEntityViewsEngine<T>:IHandleEntityViewEngine where T:EntityView<T>, new()
  5. {
  6. protected abstract void Add(T entityView);
  7. protected abstract void Remove(T entityView);
  8. public virtual void Add(IEntityView entityView)
  9. {
  10. Add((T) entityView);
  11. }
  12. public virtual void Remove(IEntityView entityView)
  13. {
  14. Remove((T) entityView);
  15. }
  16. }
  17. }
  18. namespace Svelto.ECS
  19. {
  20. public abstract class MultiEntityViewsEngine<T, U> : MultiEntityViewsEngine<T>
  21. where T:EntityView<T>, new()
  22. where U:EntityView<U>, new()
  23. {
  24. protected abstract void Add(U entityView);
  25. protected abstract void Remove(U entityView);
  26. public override void Add(IEntityView entityView)
  27. {
  28. var castedEntityView = entityView as U;
  29. if (castedEntityView != null)
  30. {
  31. Add(castedEntityView);
  32. }
  33. else
  34. {
  35. base.Add(entityView);
  36. }
  37. }
  38. public override void Remove(IEntityView entityView)
  39. {
  40. if (entityView is U)
  41. {
  42. Remove((U) entityView);
  43. }
  44. else
  45. {
  46. base.Remove(entityView);
  47. }
  48. }
  49. }
  50. public abstract class MultiEntityViewsEngine<T, U, V> : MultiEntityViewsEngine<T, U>
  51. where T : EntityView<T>, new()
  52. where U : EntityView<U>, new()
  53. where V : EntityView<V>, new()
  54. {
  55. protected abstract void Add(V entityView);
  56. protected abstract void Remove(V entityView);
  57. public override void Add(IEntityView entityView)
  58. {
  59. var castedEntityView = entityView as V;
  60. if (castedEntityView != null)
  61. {
  62. Add(castedEntityView);
  63. }
  64. else
  65. base.Add(entityView);
  66. }
  67. public override void Remove(IEntityView entityView)
  68. {
  69. var castedEntityView = entityView as V;
  70. if (castedEntityView != null)
  71. {
  72. Remove(castedEntityView);
  73. }
  74. else
  75. base.Remove(entityView);
  76. }
  77. }
  78. }