ECS - 01010111/zerolib GitHub Wiki
An extremely simple (~100 lines of code) Entity-Component-System implementation!
Usage:
import zero.utilities.ECS;
class Main
{
static function main()
{
ECS.register_entity('human');
ECS.register_component('human', 'position', { x: 0, y: 0 });
ECS.register_component('human', 'velocity', { x: 1, y: 0 });
ECS.register_system(new BasicMovement(), ['position', 'velocity']);
for (i in 0...10) ECS.tick();
trace(ECS.get_data('human', 'position')); // {x: 10, y: 0}
}
}
class BasicMovement implements ECS.ISystem
{
public function new() {}
public function update(dt:Float, entities:Array<String>) for (entity in entities) {
var position = ECS.get_data(entity, 'position');
var velocity = ECS.get_data(entity, 'velocity');
position.x += velocity.x;
position.y += velocity.y;
}
}