namespace Svelto.ECS { public class GenericEntityDescriptor : EntityDescriptor where T : NodeWithID, new() { static GenericEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new NodeBuilder() }; } public GenericEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) {} static readonly INodeBuilder[] _nodesToBuild; } public class GenericEntityDescriptor : EntityDescriptor where T : NodeWithID, new() where U : NodeWithID, new() { static GenericEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new NodeBuilder(), new NodeBuilder() }; } public GenericEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) {} static readonly INodeBuilder[] _nodesToBuild; } public class GenericEntityDescriptor : EntityDescriptor where T : NodeWithID, new() where U : NodeWithID, new() where V : NodeWithID, new() { static GenericEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new NodeBuilder(), new NodeBuilder(), new NodeBuilder() }; } public GenericEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) {} static readonly INodeBuilder[] _nodesToBuild; } public class GenericEntityDescriptor : EntityDescriptor where T : NodeWithID, new() where U : NodeWithID, new() where V : NodeWithID, new() where W : NodeWithID, new() { static GenericEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new NodeBuilder(), new NodeBuilder(), new NodeBuilder(), new NodeBuilder() }; } public GenericEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) {} static readonly INodeBuilder[] _nodesToBuild; } public class GenericEntityDescriptor : EntityDescriptor where T : NodeWithID, new() where U : NodeWithID, new() where V : NodeWithID, new() where W : NodeWithID, new() where X : NodeWithID, new() { static GenericEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new NodeBuilder(), new NodeBuilder(), new NodeBuilder(), new NodeBuilder(), new NodeBuilder() }; } public GenericEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) {} static readonly INodeBuilder[] _nodesToBuild; } public class GenericEntityDescriptor : EntityDescriptor where T : NodeWithID, new() where U : NodeWithID, new() where V : NodeWithID, new() where W : NodeWithID, new() where X : NodeWithID, new() where Y : NodeWithID, new() { static GenericEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new NodeBuilder(), new NodeBuilder(), new NodeBuilder(), new NodeBuilder(), new NodeBuilder(), new NodeBuilder() }; } public GenericEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) {} static readonly INodeBuilder[] _nodesToBuild; } public class GenericMixedEntityDescriptor : EntityDescriptor where T : INodeBuilder, new() { static GenericMixedEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new T(), }; } public GenericMixedEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) { } static readonly INodeBuilder[] _nodesToBuild; } public class GenericMixedEntityDescriptor : EntityDescriptor where T : INodeBuilder, new() where U : INodeBuilder, new() where V : INodeBuilder, new() { static GenericMixedEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new T(), new U(), new V() }; } public GenericMixedEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) { } static readonly INodeBuilder[] _nodesToBuild; } public class GenericMixedEntityDescriptor : EntityDescriptor where T : INodeBuilder, new() where U : INodeBuilder, new() where V : INodeBuilder, new() where W : INodeBuilder, new() { static GenericMixedEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new T(), new U(), new V(), new W() }; } public GenericMixedEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) { } static readonly INodeBuilder[] _nodesToBuild; } public class GenericMixedEntityDescriptor : EntityDescriptor where T : INodeBuilder, new() where U : INodeBuilder, new() where V : INodeBuilder, new() where W : INodeBuilder, new() where X : INodeBuilder, new() { static GenericMixedEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new T(), new U(), new V(), new W(), new X() }; } public GenericMixedEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) { } static readonly INodeBuilder[] _nodesToBuild; } public class GenericMixedEntityDescriptor : EntityDescriptor where T : INodeBuilder, new() where U : INodeBuilder, new() where V : INodeBuilder, new() where W : INodeBuilder, new() where X : INodeBuilder, new() where Y : INodeBuilder, new() { static GenericMixedEntityDescriptor() { _nodesToBuild = new INodeBuilder[] { new T(), new U(), new V(), new W(), new X(), new Y() }; } public GenericMixedEntityDescriptor(params object[] componentsImplementor) : base(_nodesToBuild, componentsImplementor) { } static readonly INodeBuilder[] _nodesToBuild; } }