diff --git a/crates/bevy_ecs/src/system/related_system.rs b/crates/bevy_ecs/src/system/related_system.rs index 43382f375c..a069c59a9b 100644 --- a/crates/bevy_ecs/src/system/related_system.rs +++ b/crates/bevy_ecs/src/system/related_system.rs @@ -9,6 +9,8 @@ use bevy_ecs::{ world::{unsafe_world_cell::UnsafeWorldCell, World}, }; +use crate::error::BevyError; + // SystemParam for combine 2 related queries pub struct Related<'w, 's, D: QueryData, F1: QueryFilter, R: RelationshipTarget, F2: QueryFilter> { data_query: Query<'w, 's, D, (F1, With)>, @@ -50,6 +52,22 @@ impl<'w, 's, D: QueryData, F1: QueryFilter, R: RelationshipTarget, F2: QueryFilt self.data_query .iter_many_mut(self.filter_query.iter().map(|r| r.get())) } + + pub fn get( + &'w self, + entity: Entity, + ) -> Result<<::ReadOnly as QueryData>::Item<'w>, BevyError> { + if self + .filter_query + .iter() + .map(|r| r.get()) + .any(|e| e == entity) + { + return Ok(self.data_query.get(entity)?); + } else { + panic!("as"); + } + } } /// Just make 2 independent queries and then combine them.