spawn_system/
spawn_system.rs

1#[macro_use] extern crate tinyecs;
2
3use tinyecs::*;
4
5pub struct SomeComponent {
6    _some_data : String
7}
8impl Component for SomeComponent {}
9
10pub struct SpawnPoint {
11    data  : &'static str,
12    count : i32
13}
14impl Component for SpawnPoint {}
15
16pub struct SpawnSystem;
17impl System for SpawnSystem {
18    fn aspect(&self) -> Aspect {
19        Aspect::all::<SpawnPoint>()
20    }
21
22    fn process_w(&mut self, entity : &mut Entity, world : &mut WorldHandle) {
23        let mut spawn_point = entity.get_component::<SpawnPoint>();
24
25        if spawn_point.count > 0 {
26            let spawned = world.entity_manager.create_entity();
27            spawned.add_component(SomeComponent { _some_data : spawn_point.data.to_string() });
28            spawned.refresh();
29
30            spawn_point.count -= 1;
31        }
32    }
33}
34
35fn main() {
36    let mut world = World::new();
37
38    {
39        let mut w = world.entity_manager();
40        let entity = w.create_entity();
41
42        entity.add_component(SpawnPoint {data : "player", count : 5});
43        entity.refresh();
44    }
45
46    world.set_system(SpawnSystem);
47
48    world.update();
49    world.update();
50}