From bf164a593635ba2ed269902d1abd0d4f371df103 Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Sat, 18 Jul 2020 01:14:16 -0700 Subject: [PATCH] ecs: fix tuple query item skipping --- crates/bevy_ecs/hecs/src/query.rs | 4 +++- crates/bevy_ecs/src/world/component.rs | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/crates/bevy_ecs/hecs/src/query.rs b/crates/bevy_ecs/hecs/src/query.rs index 83cee2ef81..b6beedd783 100644 --- a/crates/bevy_ecs/hecs/src/query.rs +++ b/crates/bevy_ecs/hecs/src/query.rs @@ -650,7 +650,9 @@ macro_rules! tuple_impl { } unsafe fn should_skip(&self) -> bool { - false + #[allow(non_snake_case)] + let ($($name,)*) = self; + $($name.should_skip()||)* false } } diff --git a/crates/bevy_ecs/src/world/component.rs b/crates/bevy_ecs/src/world/component.rs index 3d8a38c507..7baddbf4b4 100644 --- a/crates/bevy_ecs/src/world/component.rs +++ b/crates/bevy_ecs/src/world/component.rs @@ -213,5 +213,12 @@ mod tests { .iter() .collect::>(); assert_eq!(a_b_changed, vec![e2]); + + let a_b_changed_tuple = world + .query::<(Changed, Changed)>() + .iter() + .map(|(e, _b)| e) + .collect::>(); + assert_eq!(a_b_changed_tuple, vec![e2]); } }