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.

33 lines
1.2KB

  1. using Svelto.DataStructures;
  2. namespace Svelto.ECS
  3. {
  4. class GenericEntityStreamConsumerFactory : IEntityStreamConsumerFactory
  5. {
  6. public GenericEntityStreamConsumerFactory(EnginesRoot weakReference)
  7. {
  8. _enginesRoot = new WeakReference<EnginesRoot>(weakReference);
  9. }
  10. public Consumer<T> GenerateConsumer<T>(string name, uint capacity) where T : unmanaged, IEntityStruct
  11. {
  12. return _enginesRoot.Target.GenerateConsumer<T>(name, capacity);
  13. }
  14. public Consumer<T> GenerateConsumer<T>(ExclusiveGroup group, string name, uint capacity) where T : unmanaged, IEntityStruct
  15. {
  16. return _enginesRoot.Target.GenerateConsumer<T>(group, name, capacity);
  17. }
  18. //enginesRoot is a weakreference because GenericEntityStreamConsumerFactory can be injected inside
  19. //engines of other enginesRoot
  20. readonly WeakReference<EnginesRoot> _enginesRoot;
  21. }
  22. public interface IEntityStreamConsumerFactory
  23. {
  24. Consumer<T> GenerateConsumer<T>(string name, uint capacity) where T : unmanaged, IEntityStruct;
  25. Consumer<T> GenerateConsumer<T>(ExclusiveGroup group, string name, uint capacity)
  26. where T : unmanaged, IEntityStruct;
  27. }
  28. }