using EcsRx.Components; using EcsRx.Components.Database; using EcsRx.Components.Lookups; using EcsRx.Plugins.Batching.Builders; namespace EcsRx.Plugins.Batching.Factories { public class BatchBuilderFactory : IBatchBuilderFactory { public IComponentDatabase ComponentDatabase { get; } public IComponentTypeLookup ComponentTypeLookup { get; } public BatchBuilderFactory(IComponentDatabase componentDatabase, IComponentTypeLookup componentTypeLookup) { ComponentDatabase = componentDatabase; ComponentTypeLookup = componentTypeLookup; } public IBatchBuilder Create() where T1 : unmanaged, IComponent where T2 : unmanaged, IComponent { return new BatchBuilder(ComponentDatabase, ComponentTypeLookup); } public IBatchBuilder Create() where T1 : unmanaged, IComponent where T2 : unmanaged, IComponent where T3 : unmanaged, IComponent { return new BatchBuilder(ComponentDatabase, ComponentTypeLookup); } public IBatchBuilder Create() where T1 : unmanaged, IComponent where T2 : unmanaged, IComponent where T3 : unmanaged, IComponent where T4 : unmanaged, IComponent { return new BatchBuilder(ComponentDatabase, ComponentTypeLookup); } public IBatchBuilder Create() where T1 : unmanaged, IComponent where T2 : unmanaged, IComponent where T3 : unmanaged, IComponent where T4 : unmanaged, IComponent where T5 : unmanaged, IComponent { return new BatchBuilder(ComponentDatabase, ComponentTypeLookup); } public IBatchBuilder Create() where T1 : unmanaged, IComponent where T2 : unmanaged, IComponent where T3 : unmanaged, IComponent where T4 : unmanaged, IComponent where T5 : unmanaged, IComponent where T6 : unmanaged, IComponent { return new BatchBuilder(ComponentDatabase, ComponentTypeLookup); } } }