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.

62 lines
2.1KB

  1. using Svelto.DataStructures;
  2. using Svelto.Common;
  3. namespace Svelto.ECS
  4. {
  5. public abstract class SortedEnginesGroup<Interface, SequenceOrder> : IStepGroupEngine
  6. where SequenceOrder : struct, ISequenceOrder where Interface : IStepEngine
  7. {
  8. protected SortedEnginesGroup(FasterList<Interface> engines)
  9. {
  10. _name = "SortedEnginesGroup - "+this.GetType().Name;
  11. _instancedSequence = new Sequence<Interface, SequenceOrder>(engines);
  12. }
  13. public void Step()
  14. {
  15. var sequenceItems = _instancedSequence.items;
  16. using (var profiler = new PlatformProfiler(_name))
  17. {
  18. for (var index = 0; index < sequenceItems.count; index++)
  19. {
  20. var engine = sequenceItems[index];
  21. using (profiler.Sample(engine.name)) engine.Step();
  22. }
  23. }
  24. }
  25. public string name => _name;
  26. readonly string _name;
  27. readonly Sequence<Interface, SequenceOrder> _instancedSequence;
  28. }
  29. public abstract class SortedEnginesGroup<Interface, Parameter, SequenceOrder>: IStepGroupEngine<Parameter>
  30. where SequenceOrder : struct, ISequenceOrder where Interface : IStepEngine<Parameter>
  31. {
  32. protected SortedEnginesGroup(FasterList<Interface> engines)
  33. {
  34. _name = "SortedEnginesGroup - "+this.GetType().Name;
  35. _instancedSequence = new Sequence<Interface, SequenceOrder>(engines);
  36. }
  37. public void Step(in Parameter param)
  38. {
  39. var sequenceItems = _instancedSequence.items;
  40. using (var profiler = new PlatformProfiler(_name))
  41. {
  42. for (var index = 0; index < sequenceItems.count; index++)
  43. {
  44. var engine = sequenceItems[index];
  45. using (profiler.Sample(engine.name)) engine.Step(param);
  46. }
  47. }
  48. }
  49. public string name => _name;
  50. readonly string _name;
  51. readonly Sequence<Interface, SequenceOrder> _instancedSequence;
  52. }
  53. }