spawn_system/
spawn_system.rs1#[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}