Tools for an easier usage of RelEcs with the Godot Engine.
C#MIT
RelEcsGodot
Tools for an easier usage of RelEcs with the Godot Engine.
// a pure ecs componentclassHealth{publicintValue;}// For the extra godot functionality, inherit from GDSystempublicclassExampleSystem:GDSystem{// Godot ScenePackedSceneSomeScene=GD.Load<PackedScene>("res://SomeScene.tscn");publicoverridevoidRun(){// Let's say our Scene looks like this://// SomeScene (SomeScene : Node2D)// -- Sprite (Sprite : Node2D)// // creating an instance of SomeScene.tscn and adding it to the scene tree.varnode=SomeScene.Instance<SomeScene>();AddChild(node);// RelEcsGodot adds a method overload for Spawn, that allows to take a Node type object// RelEcsGodot will automatically convert that Node into an Entity with Components in the ECS.Entityentity=Spawn(node).Id();// this is now a normal ecs entity and we can do the things we're used to// like adding other struct components to it.On(entity).Add(newHealth{Value=10})// despawns the entity AND frees the node it was created from.
DespawnAndFree(entity);// NOTE: just calling Despawn(entity) will not free the node, only the entity.// We can query for those Nodes like so:foreach(var(entity,sprite,health)inQuery<SomeScene,Sprite,Health>()){// do something with your nodes here}// entities that are spawned from a node also have a special component that you can query for.varquery=Query<Root>();}}