From 037f6c7888dbc54868b808ad968df469f0a4e5ac Mon Sep 17 00:00:00 2001 From: HampusM Date: Mon, 20 Jan 2025 18:14:33 +0100 Subject: perf(ecs): use Query::iter_with_euids to iterate phases --- ecs/src/lib.rs | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/ecs/src/lib.rs b/ecs/src/lib.rs index 1b9a31b..1fb755f 100644 --- a/ecs/src/lib.rs +++ b/ecs/src/lib.rs @@ -269,7 +269,7 @@ impl World { let phase_query = self.query::<(&Phase, &Relationship), ()>(); - for (index, (_, phase_rel)) in phase_query.iter().enumerate() { + for (child_phase_euid, (_, phase_rel)) in phase_query.iter_with_euids() { if !phase_rel .target_uids() .any(|phase_euid| phase_euid == parent_phase_euid) @@ -277,13 +277,8 @@ impl World continue; } - let phase_euid = phase_query - .get_entity_uid(index) - .expect("Cannot get current query iteration entity UID"); - - self.query_and_run_systems(phase_euid); - - self.perform_child_phases(phase_euid); + self.query_and_run_systems(child_phase_euid); + self.perform_child_phases(child_phase_euid); } } @@ -292,18 +287,13 @@ impl World let phase_query = self.query::<(&Phase,), Not>>>(); - for (index, (_,)) in phase_query.iter().enumerate() { - let child_phase_euid = phase_query - .get_entity_uid(index) - .expect("Cannot get current query iteration entity UID"); - - if child_phase_euid == *START_PHASE { + for (phase_euid, (_,)) in phase_query.iter_with_euids() { + if phase_euid == *START_PHASE { continue; } - self.query_and_run_systems(child_phase_euid); - - self.perform_child_phases(child_phase_euid); + self.query_and_run_systems(phase_euid); + self.perform_child_phases(phase_euid); } } -- cgit v1.2.3-18-g5258