tinyecs 0.0.3

Tiny entity component system
Documentation
#[macro_use] extern crate tinyecs;

use tinyecs::*;

pub struct SomeComponent {
    _some_data : String
}
impl Component for SomeComponent {}

pub struct SpawnPoint {
    data  : &'static str,
    count : i32
}
impl Component for SpawnPoint {}

pub struct SpawnSystem;
impl System for SpawnSystem {
    fn aspect(&self) -> Aspect {
        Aspect::all::<SpawnPoint>()
    }

    fn process_w(&mut self, entity : &mut Entity, world : &mut WorldHandle) {
        let mut spawn_point = entity.get_component::<SpawnPoint>();

        if spawn_point.count > 0 {
            let spawned = world.entity_manager.create_entity();
            spawned.add_component(SomeComponent { _some_data : spawn_point.data.to_string() });
            spawned.refresh();

            spawn_point.count -= 1;
        }
    }
}

fn main() {
    let mut world = World::new();

    {
        let mut w = world.entity_manager();
        let entity = w.create_entity();

        entity.add_component(SpawnPoint {data : "player", count : 5});
        entity.refresh();
    }

    world.set_system(SpawnSystem);

    world.update();
    world.update();
}