Removed unecessary conent + bugfixes

We had a bug where double registering a component errored.
That was because I fucked up and used the wrong symbol name at one
point.
_size vs _sizeof
Its fixed now
This commit is contained in:
Booklordofthedings 2024-11-17 16:59:12 +01:00
parent 70b39a2b4a
commit 553b1f4166
5 changed files with 1 additions and 140 deletions

View file

@ -18,7 +18,7 @@ class ComponentRegistry
{ {
///Return the existing component if it matches ///Return the existing component if it matches
if(_componentLookup.ContainsKeyAlt<StringView>(name) if(_componentLookup.ContainsKeyAlt<StringView>(name)
&& Components[_componentLookup[scope .(name)]].[Friend]_packedEntities.[Friend]_size == size) && Components[_componentLookup[scope .(name)]].[Friend]_packedEntities.[Friend]_sizeof == size)
return _componentLookup[scope .(name)]; return _componentLookup[scope .(name)];
else if(_componentLookup.ContainsKeyAlt<StringView>(name)) else if(_componentLookup.ContainsKeyAlt<StringView>(name))
{ {

View file

@ -1,15 +0,0 @@
namespace Theater_ECS.Example;
using System;
struct Position
{
public float x = (.)gRand.NextI32() % 25;
public float y = (.)gRand.NextI32() % 25;
public void Update(float a, float b) mut
{
x += a;
y += b;
}
}

View file

@ -1,93 +0,0 @@
namespace Theater_ECS;
using Theater_ECS.Example;
using Theater_ECS.Containers;
using System;
using System.Collections;
class Program
{
public static void Main()
{
ECS e = scope .();
MovementSystem s = scope .();
s.RegisterSystem(e);
for(int32 i < 500000)
{
var entity = e.Entity_Create();
e.[Friend]_compRegistry.Components[s.[Friend]_Components[0]].Add(entity, &Position());
e.[Friend]_compRegistry.Components[s.[Friend]_Components[1]].Add(entity, &Velocity());
}
System.Diagnostics.Stopwatch watch = scope .();
for(int o < 10)
{
watch.Start();
for(int ii < 10)
{
s.RunSystem(e);
}
Console.WriteLine(scope $"{watch.ElapsedMilliseconds}ms");
watch.Stop();
watch.Reset();
}
//Console.Read();
}
}
struct waste
{
uint32[4] asd;
}
/*
A definition of the functionality and usage of the Theater-ECS
Goals:
- Fast
The target is handling the maximum alive at one point amount ~1 048 000 components in a single frame
- Use what you need
Allocations should be kept at a minimum (Paging), and components and systems should not be tracked unless they
are used and the user explicitly asks for them
- Dynamic
The ecs should by default be fully dynamic, meaning supporting abitrary systems and components.
Also Types should not be hardlocked to a single component, so that one type can be used for multiple
components.
Components:
- ECS
-CreateEntity
Create a new entity and return it
-DeleteEntity
Delete the input identity
-IsAlive
Check wether a given identity is alive
-GetAllData
Return Span(ComponentId, void*) containing every component that has data on this entity
-RegisterComponent
Create a new container and return the id of the component
-GetComponentId
Returns the component id of a given input
-AddComponentToEntity
creates a component data for the entry and returns a pointer to it
-RemoveComponentFromEntity
Deataches a component from an entity
-GetComponentData
Returns a Span<Entity, ComponentData> for a given component
-RegisterSystem
Add a system the the ecs object
-RunSystem
Run a single run of a system without registering it
-RunSystems
Run all available systems
-GetSystemEnumerator
Retrieve an IEnumerable for a given set of component IDS
*/

View file

@ -1,9 +0,0 @@
namespace Theater_ECS.Example;
using System;
struct Velocity
{
public float x = (.)gRand.NextI32() % 25;
public float y = (.)gRand.NextI32() % 25;
}

View file

@ -1,6 +1,5 @@
namespace Theater_ECS; namespace Theater_ECS;
using Theater_ECS.Containers; using Theater_ECS.Containers;
using Theater_ECS.Example;
using System; using System;
using System.Collections; using System.Collections;
@ -196,25 +195,4 @@ abstract class System
} }
#endregion #endregion
}
class MovementSystem : System
{
public override void RegisterSystem(ECS ecs)
{
RegisterComponent<Position>(ecs);
RegisterComponent<Velocity>(ecs);
}
public override void Run(void* pos, void* vel)
{
((Position*)pos).x += ((Velocity*)vel).x;
((Position*)pos).y += ((Velocity*)vel).y;
}
public override void Run(void* pos, void* waste, void* vel)
{
((Position*)pos).x += ((Velocity*)vel).x;
((Position*)pos).y += ((Velocity*)vel).y;
}
} }