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.

43 lines
1.7KB

  1. namespace Svelto.ECS
  2. {
  3. public abstract class MultiEntityViewsEngine<T, U> : SingleEntityViewEngine<T>, IHandleEntityStructEngine<U>
  4. where U : class, IEntityStruct where T : class, IEntityStruct
  5. {
  6. public void AddInternal(ref U entityView)
  7. { Add(entityView); }
  8. public void RemoveInternal(ref U entityView)
  9. { Remove(entityView); }
  10. protected abstract void Add(U entityView);
  11. protected abstract void Remove(U entityView);
  12. }
  13. public abstract class MultiEntityViewsEngine<T, U, V> : MultiEntityViewsEngine<T, U>, IHandleEntityStructEngine<V>
  14. where V : class, IEntityStruct where U : class, IEntityStruct where T : class, IEntityStruct
  15. {
  16. public void AddInternal(ref V entityView)
  17. { Add(entityView); }
  18. public void RemoveInternal(ref V entityView)
  19. { Remove(entityView); }
  20. protected abstract void Add(V entityView);
  21. protected abstract void Remove(V entityView);
  22. }
  23. /// <summary>
  24. /// Please do not add more MultiEntityViewsEngine
  25. /// if you use more than 4 nodes, your engine has
  26. /// already too many responsabilities.
  27. /// </summary>
  28. public abstract class MultiEntityViewsEngine<T, U, V, W> : MultiEntityViewsEngine<T, U, V>, IHandleEntityStructEngine<W>
  29. where W : class, IEntityStruct where V : class, IEntityStruct where U : class, IEntityStruct where T : class, IEntityStruct
  30. {
  31. public void AddInternal(ref W entityView)
  32. { Add(entityView); }
  33. public void RemoveInternal(ref W entityView)
  34. { Remove(entityView); }
  35. protected abstract void Add(W entityView);
  36. protected abstract void Remove(W entityView);
  37. }
  38. }