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.

39 lines
1.4KB

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