namespace Svelto.ECS { public abstract class GenericEntityDescriptor : IEntityDescriptor where T : struct, IBaseEntityComponent { static readonly IComponentBuilder[] _componentBuilders; static GenericEntityDescriptor() { _componentBuilders = new IComponentBuilder[] {new ComponentBuilder()}; } public IComponentBuilder[] componentsToBuild => _componentBuilders; } public abstract class GenericEntityDescriptor : IEntityDescriptor where T : struct, IBaseEntityComponent where U : struct, IBaseEntityComponent { static readonly IComponentBuilder[] _componentBuilders; static GenericEntityDescriptor() { _componentBuilders = new IComponentBuilder[] {new ComponentBuilder(), new ComponentBuilder()}; } public IComponentBuilder[] componentsToBuild => _componentBuilders; } public abstract class GenericEntityDescriptor : IEntityDescriptor where T : struct, IBaseEntityComponent where U : struct, IBaseEntityComponent where V : struct, IBaseEntityComponent { static readonly IComponentBuilder[] _componentBuilders; static GenericEntityDescriptor() { _componentBuilders = new IComponentBuilder[] { new ComponentBuilder(), new ComponentBuilder(), new ComponentBuilder() }; } public IComponentBuilder[] componentsToBuild => _componentBuilders; } public abstract class GenericEntityDescriptor : IEntityDescriptor where T : struct, IBaseEntityComponent where U : struct, IBaseEntityComponent where V : struct, IBaseEntityComponent where W : struct, IBaseEntityComponent { static readonly IComponentBuilder[] _componentBuilders; static GenericEntityDescriptor() { _componentBuilders = new IComponentBuilder[] { new ComponentBuilder(), new ComponentBuilder(), new ComponentBuilder(), new ComponentBuilder() }; } public IComponentBuilder[] componentsToBuild => _componentBuilders; } public abstract class GenericEntityDescriptor : IEntityDescriptor where T : struct, IBaseEntityComponent where U : struct, IBaseEntityComponent where V : struct, IBaseEntityComponent where W : struct, IBaseEntityComponent where X : struct, IBaseEntityComponent { static readonly IComponentBuilder[] _componentBuilders; static GenericEntityDescriptor() { _componentBuilders = new IComponentBuilder[] { new ComponentBuilder(), new ComponentBuilder(), new ComponentBuilder(), new ComponentBuilder(), new ComponentBuilder() }; } public IComponentBuilder[] componentsToBuild => _componentBuilders; } public abstract class GenericEntityDescriptor : IEntityDescriptor where T : struct, IBaseEntityComponent where U : struct, IBaseEntityComponent where V : struct, IBaseEntityComponent where W : struct, IBaseEntityComponent where X : struct, IBaseEntityComponent where Y : struct, IBaseEntityComponent { static readonly IComponentBuilder[] _componentBuilders; static GenericEntityDescriptor() { _componentBuilders = new IComponentBuilder[] { new ComponentBuilder(), new ComponentBuilder(), new ComponentBuilder(), new ComponentBuilder(), new ComponentBuilder(), new ComponentBuilder() }; } public IComponentBuilder[] componentsToBuild => _componentBuilders; } }