Mirror of Svelto.ECS because we're a fan of it
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

40 lignes
1.5KB

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