Change api to support archetypes and move stuff to different namespaces

This commit is contained in:
Booklordofthedings 2024-11-18 10:29:35 +01:00
parent a8ac473666
commit 499cea5b44
10 changed files with 93 additions and 97 deletions

View file

@ -1,5 +1,9 @@
namespace Theater_ECS; namespace Theater_ECS;
abstract class Archetype using System;
using System.Collections;
interface IArchetypeable
{ {
public void Instantiate(ECS ecs, Entity e);
} }

5
src/Component.bf Normal file
View file

@ -0,0 +1,5 @@
namespace Theater_ECS;
using System;
typealias Component = int_cosize;

View file

@ -1,41 +1,12 @@
namespace Theater_ECS; namespace Theater_ECS;
using Theater_ECS.Containers; using Theater_ECS.Internal.Managers;
using System; using System;
using System.Collections; using System.Collections;
class ECS class ECS
{ {
private EntityRegister _registry = new .() ~ delete _;
///Create a new Entity
public Entity Entity_Create() => _registry.Create();
///Delete an Entity
public void Entity_Delete(Entity e) => _registry.Remove(e);
///Returns wether the given entity is still alive
public bool Entity_Alive(Entity e) => _registry.IsAlive(e);
//TODO: Entity_GetAllComponents
private ComponentManager _compRegistry = new .() ~ delete _;
///Registers a component but hides some of the work behind generics
public Component RegisterComponent<T>() => _compRegistry.RegisterComponent(typeof(T).GetFullName(.. scope .()), strideof(T));
public Component RegisterComponent(StringView name, int_cosize size) => _compRegistry.RegisterComponent(name, size);
///Retrieves the id of a component
public Result<Component> GetComponent<T>() => _compRegistry.GetComponent(typeof(T).GetFullName(.. scope .()));
public Result<Component> GetComponent(StringView name) => _compRegistry.GetComponent(name);
public int_cosize GetComponentCount(Component c) => _compRegistry.Components[c].Count();
public Span<Entity> GetComponentEntities(Component c) => _compRegistry.Components[c].GetAll();
[Inline] public void* GetComponentData(Entity e, Component c) => _compRegistry.Components[c].[Unchecked]Get(e);
public SystemsManager Systems = new .(this) ~ delete _; public SystemsManager Systems = new .(this) ~ delete _;
public ComponentManager Components = new .() ~ delete _; public ComponentManager Components = new .() ~ delete _;
public EntityManager Entities = new .(this) ~ delete _;
} }

View file

@ -1,4 +1,4 @@
namespace Theater_ECS; namespace Theater_ECS.Internal.Containers;
/* /*
Not all actions can be done during the run of a system, Not all actions can be done during the run of a system,
@ -8,7 +8,7 @@ namespace Theater_ECS;
class CommandBuffer class CommandBuffer
{ {
public void DeleteEntity(Entity e) {} public void DeleteEntity(Entity e) {}
public void CreateEntity(Archetype a) {} public void CreateEntity(IArchetypeable a) {}
public void AddComponentToEntity(Entity e, Component c, void* data) {} public void AddComponentToEntity(Entity e, Component c, void* data) {}
public void RemoveComponentFromEntity(Entity e, Component c) {} public void RemoveComponentFromEntity(Entity e, Component c) {}
} }

View file

@ -1,4 +1,4 @@
namespace Theater_ECS.Containers; namespace Theater_ECS.Internal.Containers;
using System; using System;
using System.Collections; using System.Collections;

View file

@ -1,10 +1,9 @@
namespace Theater_ECS.Containers; namespace Theater_ECS.Internal.Containers;
using System; using System;
using System.Collections; using System.Collections;
using System.Diagnostics;
using System.Diagnostics.Contracts;
using System.Threading; using System.Threading;
using System.Diagnostics;
using System.Reflection; using System.Reflection;
//A variant of list, which has no type associated with it //A variant of list, which has no type associated with it

View file

@ -1,14 +1,11 @@
namespace Theater_ECS; namespace Theater_ECS.Internal.Managers;
using Theater_ECS.Containers; using Theater_ECS.Internal.Containers;
using System; using System;
using System.Collections; using System.Collections;
typealias Component = int_cosize;
class ComponentManager class ComponentManager
{ {
private Dictionary<String, Component> _componentLookup = new .() ~ DeleteDictionaryAndKeys!(_); private Dictionary<String, Component> _componentLookup = new .() ~ DeleteDictionaryAndKeys!(_);
public List<PagedSparseSet> Components = new .() ~ DeleteContainerAndItems!(_); public List<PagedSparseSet> Components = new .() ~ DeleteContainerAndItems!(_);
@ -41,12 +38,19 @@ class ComponentManager
return (.)(Components.Count-1); return (.)(Components.Count-1);
} }
[Inline]
public void* GetComponentData(Entity e, Component c) => Components[c].[Unchecked]Get(e);
///Retrieves the id of a component ///Retrieves the id of a component
public Result<Component> GetComponent(StringView name) public Result<Component> GetId(StringView name)
{ {
if(!_componentLookup.ContainsKeyAlt<StringView>(name)) if(!_componentLookup.ContainsKeyAlt<StringView>(name))
return .Err; return .Err;
return _componentLookup[scope .(name)]; return _componentLookup[scope .(name)];
} }
public void AddComponentToEntity(Entity e, Component c, void* data)
{
Components[c].Add(e, data);
}
} }

View file

@ -1,14 +1,20 @@
namespace Theater_ECS; namespace Theater_ECS.Internal.Managers;
using System; using System;
using System.Collections; using System.Collections;
class EntityRegister class EntityManager
{ {
private ECS _owner;
private List<Entity> _entities = new .() ~ delete _; private List<Entity> _entities = new .() ~ delete _;
private int32 _available = 0; private int32 _available = 0;
private Entity _next = .Null; private Entity _next = .Null;
public this(ECS ecs)
{
_owner = ecs;
}
public Entity Create() public Entity Create()
{ {
@ -32,6 +38,13 @@ class EntityRegister
} }
} }
public Entity Create(IArchetypeable archetype)
{
var e = this.Create();
archetype.Instantiate(_owner, e);
return e;
}
public void Remove(Entity e) public void Remove(Entity e)
{ {
let temp = _next; let temp = _next;

View file

@ -1,4 +1,4 @@
namespace Theater_ECS; namespace Theater_ECS.Internal.Managers;
using System; using System;
using System.Collections; using System.Collections;

View file

@ -1,5 +1,5 @@
namespace Theater_ECS; namespace Theater_ECS;
using Theater_ECS.Containers; using Theater_ECS.Internal.Containers;
using System; using System;
using System.Collections; using System.Collections;
@ -13,7 +13,7 @@ abstract class System
private List<Component> _Components = new .(10) ~ delete _; private List<Component> _Components = new .(10) ~ delete _;
///Get the compoent id and cache it inside of this system ///Get the compoent id and cache it inside of this system
public void RegisterComponent<T>(ECS ecs) where T : struct => _Components.Add(ecs.RegisterComponent<T>()); public void RegisterComponent<T>(ECS ecs) where T : struct => _Components.Add(ecs.Components.RegisterComponent(typeof(T).GetFullName(.. scope .()), strideof(T)));
public abstract void RegisterSystem(ECS ecs); public abstract void RegisterSystem(ECS ecs);
@ -34,15 +34,15 @@ abstract class System
Component comp = _Components[0]; Component comp = _Components[0];
for (var c in _Components) for (var c in _Components)
if (ecs.GetComponentCount(c) < count) if (ecs.Components.Components[c].Count() < count)
{ {
count = ecs.GetComponentCount(c); count = ecs.Components.Components[c].Count();
comp = c; comp = c;
} }
//We now have the list of entities to loop through //We now have the list of entities to loop through
Span<Entity> entities = ecs.GetComponentEntities(comp); Span<Entity> entities = ecs.Components.Components[comp].GetAll();
UList main = ecs.[Friend]_compRegistry.Components[comp].[Friend]_packedEntities; UList main = ecs.Components.Components[comp].[Friend]_packedEntities;
var cun = entities.Length - 1; var cun = entities.Length - 1;
#region DumbStatement #region DumbStatement
@ -54,143 +54,143 @@ abstract class System
case 2: case 2:
if (comp == _Components[0]) if (comp == _Components[0])
for (int ii < cun) for (int ii < cun)
this.Run(main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[1])); this.Run(main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[1]));
else else
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index]); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index]);
case 3: case 3:
if (comp == _Components[0]) if (comp == _Components[0])
for (int ii < cun) for (int ii < cun)
this.Run(main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2])); this.Run(main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]));
else if (comp == _Components[1]) else if (comp == _Components[1])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]));
else else
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index]); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index]);
case 4: case 4:
if (comp == _Components[0]) if (comp == _Components[0])
for (int ii < cun) for (int ii < cun)
this.Run(main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3])); this.Run(main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]));
else if (comp == _Components[1]) else if (comp == _Components[1])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[2])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[2]));
else if (comp == _Components[2]) else if (comp == _Components[2])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]));
else else
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index]); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index]);
case 5: case 5:
if (comp == _Components[0]) if (comp == _Components[0])
for (int ii < cun) for (int ii < cun)
this.Run(main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4])); this.Run(main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]));
else if (comp == _Components[1]) else if (comp == _Components[1])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[4])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[4]));
else if (comp == _Components[2]) else if (comp == _Components[2])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[4])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[4]));
else if (comp == _Components[3]) else if (comp == _Components[3])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[4])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[4]));
else else
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), main[(.)entities[ii].Index]); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), main[(.)entities[ii].Index]);
case 6: case 6:
if (comp == _Components[0]) if (comp == _Components[0])
for (int ii < cun) for (int ii < cun)
this.Run(main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5])); this.Run(main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]));
else if (comp == _Components[1]) else if (comp == _Components[1])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]));
else if (comp == _Components[2]) else if (comp == _Components[2])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]));
else if (comp == _Components[3]) else if (comp == _Components[3])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]));
else if (comp == _Components[4]) else if (comp == _Components[4])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[5])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[5]));
else else
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), main[(.)entities[ii].Index]); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), main[(.)entities[ii].Index]);
case 7: case 7:
if (comp == _Components[0]) if (comp == _Components[0])
for (int ii < cun) for (int ii < cun)
this.Run(main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6])); this.Run(main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]));
else if (comp == _Components[1]) else if (comp == _Components[1])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]));
else if (comp == _Components[2]) else if (comp == _Components[2])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]));
else if (comp == _Components[3]) else if (comp == _Components[3])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]));
else if (comp == _Components[4]) else if (comp == _Components[4])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]));
else if (comp == _Components[5]) else if (comp == _Components[5])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[6])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[6]));
else else
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), main[(.)entities[ii].Index]); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), main[(.)entities[ii].Index]);
case 8: case 8:
if (comp == _Components[0]) if (comp == _Components[0])
for (int ii < cun) for (int ii < cun)
this.Run(main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[7])); this.Run(main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[7]));
else if (comp == _Components[1]) else if (comp == _Components[1])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[7])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[7]));
else if (comp == _Components[2]) else if (comp == _Components[2])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[7])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[7]));
else if (comp == _Components[3]) else if (comp == _Components[3])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[7])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[7]));
else if (comp == _Components[4]) else if (comp == _Components[4])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[7])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[7]));
else if (comp == _Components[5]) else if (comp == _Components[5])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[7])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[7]));
else if (comp == _Components[6]) else if (comp == _Components[6])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[7])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[7]));
else else
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), main[(.)entities[ii].Index]); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), main[(.)entities[ii].Index]);
case 9: case 9:
if (comp == _Components[0]) if (comp == _Components[0])
for (int ii < cun) for (int ii < cun)
this.Run(main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[7]), ecs.GetComponentData(entities[ii], _Components[8])); this.Run(main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[7]), ecs.Components.GetComponentData(entities[ii], _Components[8]));
else if (comp == _Components[1]) else if (comp == _Components[1])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[7]), ecs.GetComponentData(entities[ii], _Components[8])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[7]), ecs.Components.GetComponentData(entities[ii], _Components[8]));
else if (comp == _Components[2]) else if (comp == _Components[2])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[7]), ecs.GetComponentData(entities[ii], _Components[8])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[7]), ecs.Components.GetComponentData(entities[ii], _Components[8]));
else if (comp == _Components[3]) else if (comp == _Components[3])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[7]), ecs.GetComponentData(entities[ii], _Components[8])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[7]), ecs.Components.GetComponentData(entities[ii], _Components[8]));
else if (comp == _Components[4]) else if (comp == _Components[4])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[7]), ecs.GetComponentData(entities[ii], _Components[8])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[7]), ecs.Components.GetComponentData(entities[ii], _Components[8]));
else if (comp == _Components[5]) else if (comp == _Components[5])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[7]), ecs.GetComponentData(entities[ii], _Components[8])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[7]), ecs.Components.GetComponentData(entities[ii], _Components[8]));
else if (comp == _Components[6]) else if (comp == _Components[6])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[7]), ecs.GetComponentData(entities[ii], _Components[8])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[7]), ecs.Components.GetComponentData(entities[ii], _Components[8]));
else if (comp == _Components[7]) else if (comp == _Components[7])
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), main[(.)entities[ii].Index], ecs.GetComponentData(entities[ii], _Components[8])); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), main[(.)entities[ii].Index], ecs.Components.GetComponentData(entities[ii], _Components[8]));
else else
for (int ii < cun) for (int ii < cun)
this.Run(ecs.GetComponentData(entities[ii], _Components[0]), ecs.GetComponentData(entities[ii], _Components[1]), ecs.GetComponentData(entities[ii], _Components[2]), ecs.GetComponentData(entities[ii], _Components[3]), ecs.GetComponentData(entities[ii], _Components[4]), ecs.GetComponentData(entities[ii], _Components[5]), ecs.GetComponentData(entities[ii], _Components[6]), ecs.GetComponentData(entities[ii], _Components[8]), main[(.)entities[ii].Index]); this.Run(ecs.Components.GetComponentData(entities[ii], _Components[0]), ecs.Components.GetComponentData(entities[ii], _Components[1]), ecs.Components.GetComponentData(entities[ii], _Components[2]), ecs.Components.GetComponentData(entities[ii], _Components[3]), ecs.Components.GetComponentData(entities[ii], _Components[4]), ecs.Components.GetComponentData(entities[ii], _Components[5]), ecs.Components.GetComponentData(entities[ii], _Components[6]), ecs.Components.GetComponentData(entities[ii], _Components[8]), main[(.)entities[ii].Index]);
} }
} }
#endregion #endregion