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 abstract void AddNode(T node);
  8. protected abstract void RemoveNode(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<T>,
  20. INodeEngine
  21. where T : INode
  22. where U : INode
  23. {
  24. protected abstract void AddNode(U node);
  25. protected abstract void RemoveNode(U node);
  26. public void Add(INode node)
  27. {
  28. if (node is T)
  29. AddNode((T)node);
  30. else
  31. AddNode((U)node);
  32. }
  33. public void Remove(INode node)
  34. {
  35. if (node is T)
  36. RemoveNode((T)node);
  37. else
  38. RemoveNode((U)node);
  39. }
  40. }
  41. }