Another Entity-Component-System, written in Rust.
simple components createion:
struct Position {
x : i32,
y : i32,
z : i32
}
impl Component for Position {}
simple entities creation:
``` let mut entitymanager = world.entitymanager(); let entity = entitymanager.createentity();
entity.addcomponent(Position {x : 0, y : 0, z : 0}); entity.addcomponent(Velocity {x : 1}); entity.refresh(); ```
simple macro for systems creation:
process_entities!((MoveSystem): |pos: Position, vel: Velocity| => {
pos.x += vel.x;
println!("Moving! position: {}, velocity: {}", pos.x, vel.x);
});
or without macroses: ``` pub struct MoverSystem; impl System for MoverSystem { fn aspect(&self) -> Aspect { aspect_all![Position, Dead] }
fn processone(&mut self, entity : &mut Entity) {
let mut pos = entity.getcomponent::
pos.pos.x += vel.x;
} } ```
More examples in /examples folder :)