using Svelto.DataStructures; namespace Svelto.ECS { class GenericEntityStreamConsumerFactory : IEntityStreamConsumerFactory { public GenericEntityStreamConsumerFactory(EnginesRoot weakReference) { _enginesRoot = new WeakReference(weakReference); } public Consumer GenerateConsumer(string name, uint capacity) where T : unmanaged, IEntityStruct { return _enginesRoot.Target.GenerateConsumer(name, capacity); } public Consumer GenerateConsumer(ExclusiveGroup group, string name, uint capacity) where T : unmanaged, IEntityStruct { return _enginesRoot.Target.GenerateConsumer(group, name, capacity); } //enginesRoot is a weakreference because GenericEntityStreamConsumerFactory can be injected inside //engines of other enginesRoot readonly WeakReference _enginesRoot; } public interface IEntityStreamConsumerFactory { Consumer GenerateConsumer(string name, uint capacity) where T : unmanaged, IEntityStruct; Consumer GenerateConsumer(ExclusiveGroup group, string name, uint capacity) where T : unmanaged, IEntityStruct; } }