From 8022e8998290b067b8aa0cb9cba8ba410826bdab Mon Sep 17 00:00:00 2001 From: HampusM Date: Thu, 21 May 2026 17:55:20 +0200 Subject: chore: rename ecs* crates to engine-ecs* --- engine-ecs/examples/with_sole.rs | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 engine-ecs/examples/with_sole.rs (limited to 'engine-ecs/examples/with_sole.rs') diff --git a/engine-ecs/examples/with_sole.rs b/engine-ecs/examples/with_sole.rs new file mode 100644 index 0000000..4b2fa44 --- /dev/null +++ b/engine-ecs/examples/with_sole.rs @@ -0,0 +1,61 @@ +use engine_ecs::pair::{ChildOf, Pair}; +use engine_ecs::phase::{Phase, UPDATE as UPDATE_PHASE}; +use engine_ecs::sole::Single; +use engine_ecs::{declare_entity, Component, Query, Sole, World}; + +#[derive(Component)] +struct Ammo +{ + ammo_left: u32, +} + +#[derive(Sole, Default)] +struct AmmoCounter +{ + counter: u32, +} + +fn count_ammo(query: Query<(&Ammo,)>, mut ammo_counter: Single) +{ + for (ammo,) in &query { + println!("Found {} ammo", ammo.ammo_left); + + ammo_counter.counter += ammo.ammo_left; + } +} + +fn print_total_ammo_count(ammo_counter: Single) +{ + println!("Total ammo count: {}", ammo_counter.counter); + + assert_eq!(ammo_counter.counter, 19); +} + +declare_entity!( + PRINT_AMMO_COUNT_PHASE, + ( + Phase, + Pair::builder() + .relation::() + .target_id(*UPDATE_PHASE) + .build() + ) +); + +fn main() +{ + let mut world = World::new(); + + world.create_declared_entity(&PRINT_AMMO_COUNT_PHASE); + + world.register_system(*UPDATE_PHASE, count_ammo); + world.register_system(*PRINT_AMMO_COUNT_PHASE, print_total_ammo_count); + + world.create_entity((Ammo { ammo_left: 4 },)); + world.create_entity((Ammo { ammo_left: 7 },)); + world.create_entity((Ammo { ammo_left: 8 },)); + + world.add_sole(AmmoCounter::default()).unwrap(); + + world.step(); +} -- cgit v1.2.3-18-g5258