From c85021d64bcc72050bce4e36be896ada211b6a6a Mon Sep 17 00:00:00 2001 From: Willow Sparks Date: Sat, 31 Jan 2026 17:25:47 +0000 Subject: [PATCH] Port examples 03 and 04 to ECS queries Replace world.iter() with hecs queries for entity iteration in build_geometry() functions. Co-Authored-By: Claude Opus 4.5 --- examples/03_physics_demo.rs | 13 ++++++++----- examples/04_camera_exploration.rs | 13 ++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/examples/03_physics_demo.rs b/examples/03_physics_demo.rs index b0bd4d4..a84e440 100644 --- a/examples/03_physics_demo.rs +++ b/examples/03_physics_demo.rs @@ -21,7 +21,7 @@ use winit::{ }; use rust4d_core::{ - Entity, Material, ShapeRef, Tesseract4D, Transform4D, World, + Entity, Material, ShapeRef, Tesseract4D, Transform4D, World, Tags, PhysicsConfig, RigidBody4D, StaticCollider, Hyperplane4D, }; use rust4d_render::{ @@ -134,11 +134,14 @@ impl App { 2.0, ); - for entity in world.iter() { - if entity.has_tag("dynamic") { - geometry.add_entity_with_color(entity, &position_gradient_color); + for (_entity, (transform, shape, material, tags)) in + world.ecs().query::<(&Transform4D, &ShapeRef, &Material, Option<&Tags>)>().iter() + { + let is_dynamic = tags.map(|t| t.has("dynamic")).unwrap_or(false); + if is_dynamic { + geometry.add_components_with_color(transform, shape.as_shape(), material, &position_gradient_color); } else { - geometry.add_entity_with_color(entity, &|v, _m| { + geometry.add_components_with_color(transform, shape.as_shape(), material, &|v, _m| { checkerboard.color_for_position(v.x, v.z) }); } diff --git a/examples/04_camera_exploration.rs b/examples/04_camera_exploration.rs index 5753417..9e154ae 100644 --- a/examples/04_camera_exploration.rs +++ b/examples/04_camera_exploration.rs @@ -34,7 +34,7 @@ use winit::{ }; use rust4d_core::{ - Entity, Material, ShapeRef, Tesseract4D, Transform4D, World, + Entity, Material, ShapeRef, Tesseract4D, Transform4D, World, Tags, Hyperplane4D, }; use rust4d_render::{ @@ -135,11 +135,14 @@ impl App { 2.0, ); - for entity in world.iter() { - if entity.has_tag("dynamic") { - geometry.add_entity_with_color(entity, &position_gradient_color); + for (_entity, (transform, shape, material, tags)) in + world.ecs().query::<(&Transform4D, &ShapeRef, &Material, Option<&Tags>)>().iter() + { + let is_dynamic = tags.map(|t| t.has("dynamic")).unwrap_or(false); + if is_dynamic { + geometry.add_components_with_color(transform, shape.as_shape(), material, &position_gradient_color); } else { - geometry.add_entity_with_color(entity, &|v, _m| { + geometry.add_components_with_color(transform, shape.as_shape(), material, &|v, _m| { checkerboard.color_for_position(v.x, v.z) }); } -- knotmirror 0.0.1