summaryrefslogtreecommitdiff
path: root/engine-ecs/examples/simple.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine-ecs/examples/simple.rs')
-rw-r--r--engine-ecs/examples/simple.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/engine-ecs/examples/simple.rs b/engine-ecs/examples/simple.rs
new file mode 100644
index 0000000..e03c003
--- /dev/null
+++ b/engine-ecs/examples/simple.rs
@@ -0,0 +1,42 @@
+use engine_ecs::phase::START as START_PHASE;
+use engine_ecs::{Component, Query, World};
+
+#[derive(Component)]
+struct SomeData
+{
+ num: u64,
+}
+
+#[derive(Component)]
+struct Greeting
+{
+ greeting: String,
+}
+
+fn say_hello(query: Query<(&SomeData, &Greeting)>)
+{
+ for (data, greeting) in &query {
+ println!("{}: {}", greeting.greeting, data.num);
+ }
+}
+
+fn main()
+{
+ let mut world = World::new();
+
+ world.register_system(*START_PHASE, say_hello);
+
+ world.create_entity((
+ SomeData { num: 987_654 },
+ Greeting {
+ greeting: "Good afternoon".to_string(),
+ },
+ ));
+
+ world.create_entity((
+ SomeData { num: 345 },
+ Greeting { greeting: "Good evening".to_string() },
+ ));
+
+ world.step();
+}