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/component_relationship.rs | 65 +++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 engine-ecs/examples/component_relationship.rs (limited to 'engine-ecs/examples/component_relationship.rs') diff --git a/engine-ecs/examples/component_relationship.rs b/engine-ecs/examples/component_relationship.rs new file mode 100644 index 0000000..0f7b514 --- /dev/null +++ b/engine-ecs/examples/component_relationship.rs @@ -0,0 +1,65 @@ +use engine_ecs::pair::Pair; +use engine_ecs::phase::START as START_PHASE; +use engine_ecs::{Component, Query, World}; + +#[derive(Component)] +struct Person +{ + name: String, +} + +fn print_dog_likers(query: Query<(&Person, Pair)>) +{ + for (person, liked_dogs) in &query { + println!( + "{} likes {} dogs!", + person.name, + if liked_dogs.large { "large" } else { "small" }, + ); + } +} + +#[derive(Component)] +struct Likes; + +#[derive(Component)] +struct Cats; + +#[derive(Component)] +struct Dogs +{ + large: bool, +} + +fn main() +{ + let mut world = World::new(); + + world.register_system(*START_PHASE, print_dog_likers); + + world.create_entity(( + Person { name: "Irving".to_string() }, + Pair::builder() + .relation::() + .target_as_data(Dogs { large: true }) + .build(), + )); + + world.create_entity(( + Person { name: "Mark".to_string() }, + Pair::builder() + .relation::() + .target_as_data(Cats) + .build(), + )); + + world.create_entity(( + Person { name: "Helena".to_string() }, + Pair::builder() + .relation::() + .target_as_data(Dogs { large: false }) + .build(), + )); + + world.step(); +} -- cgit v1.2.3-18-g5258