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.

47 lines
1.1KB

  1. using Svelto.ECS.Internal;
  2. namespace Svelto.ECS.Internal
  3. {
  4. public abstract class MultiNodesEngine<T>
  5. where T : INode
  6. {
  7. protected internal abstract void Add(T node);
  8. protected internal abstract void Remove(T node);
  9. }
  10. }
  11. namespace Svelto.ECS
  12. {
  13. public abstract class MultiNodesEngine : INodesEngine
  14. {
  15. public abstract System.Type[] AcceptedNodes();
  16. public abstract void Add(INode node);
  17. public abstract void Remove(INode node);
  18. }
  19. public abstract class MultiNodesEngine<T, U> : MultiNodesEngine<U>,
  20. INodeEngine
  21. where T : INode
  22. where U : INode
  23. {
  24. protected abstract void Add(T node);
  25. protected abstract void Remove(T node);
  26. public void Add(INode node)
  27. {
  28. if (node is T)
  29. Add((T) node);
  30. else
  31. ((MultiNodesEngine<U>)(this)).Add((U)node);
  32. }
  33. public void Remove(INode node)
  34. {
  35. if (node is T)
  36. Remove((T)node);
  37. else
  38. ((MultiNodesEngine<U>)(this)).Remove((U)node);
  39. }
  40. }
  41. }