From 3f9750edecad1615348d9ec0995a2fbde468c8a3 Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 28 Jul 2026 14:02:53 +0200 Subject: feat(engine-ecs): add Actions fn for updating pair --- engine-ecs/src/lib.rs | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'engine-ecs/src/lib.rs') diff --git a/engine-ecs/src/lib.rs b/engine-ecs/src/lib.rs index 97316f9..039661a 100644 --- a/engine-ecs/src/lib.rs +++ b/engine-ecs/src/lib.rs @@ -285,9 +285,7 @@ impl World extension.collect(extension_collector); } - pub fn query<'this, TermsT>( - &'this self, - ) -> Query<'this, TermsT> + pub fn query<'this, TermsT>(&'this self) -> Query<'this, TermsT> where TermsT: QueryTermTuple<'this>, { @@ -609,6 +607,29 @@ impl World &mut self.data.component_storage, ); } + Action::SetPair { entity_id, pair_id, new_pair } => { + if self.get_entity(entity_id).is_none() { + tracing::error!( + entity = %entity_id, + pair = %pair_id, + new_pair = %new_pair.id, + "Cannot set pair of a non-existant entity" + ); + continue; + }; + + let _ = self + .data + .component_storage + .remove_entity_component(entity_id, pair_id); + + Self::add_entity_components( + entity_id, + [new_pair], + &mut self.data.component_storage, + &EventSubmitter::new(&self.data.new_events), + ); + } Action::Stop => { self.stop.store(true, Ordering::Relaxed); } @@ -712,7 +733,11 @@ impl World if let Err(err) = component_storage.remove_entity_component(entity_uid, component_id) { - tracing::error!("Failed to remove component to entity: {err}"); + tracing::error!( + entity=%entity_uid, + component=%component_id, + "Failed to remove component from entity: {err}" + ); } } } -- cgit v1.2.3-18-g5258