diff options
author | HampusM <hampus@hampusmat.com> | 2025-08-26 16:43:40 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2025-09-11 18:24:48 +0200 |
commit | 09981e0173a2427264e432226804292c91e1f920 (patch) | |
tree | 70112b6cda98a55da625ec9f6762927f00affe91 /ecs/src/query | |
parent | ce1bade2c21cc3129fa8bc2b4bc67bc4dc2c25c3 (diff) |
feat(ecs): add component changed event
Diffstat (limited to 'ecs/src/query')
-rw-r--r-- | ecs/src/query/flexible.rs | 4 | ||||
-rw-r--r-- | ecs/src/query/term.rs | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/ecs/src/query/flexible.rs b/ecs/src/query/flexible.rs index 0caaa27..936ab82 100644 --- a/ecs/src/query/flexible.rs +++ b/ecs/src/query/flexible.rs @@ -36,6 +36,7 @@ impl<'world, const MAX_TERM_CNT: usize> Query<'world, MAX_TERM_CNT> .zip(archetype.entities()) }) as ComponentIterMapFn, ), + world: self.world, } } @@ -65,6 +66,7 @@ impl<'query, const MAX_TERM_CNT: usize> IntoIterator for &'query Query<'_, MAX_T pub struct Iter<'query> { iter: QueryEntityIter<'query>, + world: &'query World, } impl<'query> Iterator for Iter<'query> @@ -75,7 +77,7 @@ impl<'query> Iterator for Iter<'query> { let (archetype, entity) = self.iter.next()?; - Some(EntityHandle::new(archetype, entity)) + Some(EntityHandle::new(archetype, entity, self.world)) } } diff --git a/ecs/src/query/term.rs b/ecs/src/query/term.rs index c8a96b6..0683918 100644 --- a/ecs/src/query/term.rs +++ b/ecs/src/query/term.rs @@ -95,7 +95,7 @@ impl<ComponentT: Component> TermWithField for Option<&mut ComponentT> fn get_field<'world>( entity_handle: &crate::entity::Handle<'world>, - _world: &'world crate::World, + world: &'world crate::World, ) -> Self::Field<'world> { Some( @@ -103,6 +103,7 @@ impl<ComponentT: Component> TermWithField for Option<&mut ComponentT> &entity_handle .get_matching_components(ComponentT::id()) .next()?, + world, ) .unwrap_or_else(|err| { panic!( |