diff --git a/ecs/src/world.rs b/ecs/src/world.rs index 65052d1..12044bd 100644 --- a/ecs/src/world.rs +++ b/ecs/src/world.rs @@ -212,10 +212,8 @@ impl World { Ok(()) } - pub fn remove_entity(&mut self, entity: Entity) -> Result> { + pub fn remove_entity(&mut self, entity: Entity) { self.entities_to_remove.push(entity); - - Ok(None) } pub fn execute_archetype(&mut self, name: impl ToString) -> Result<()> { @@ -360,8 +358,9 @@ impl World { for (entity, changes) in core::mem::take(&mut self.entities_updates) { self.updates.remove_entity(entity); + self.archetypes.remove_entity(entity); - if let Some(entity_object) = unsafe { self.entity_mut_unchecked(entity).ok() } { + if let Ok(entity_object) = unsafe { self.entity_mut_unchecked(entity) } { entity_object.activation_state.apply_change(); for change in changes { @@ -390,6 +389,7 @@ impl World { entity_object.activation_state.apply_change(); self.updates.add_entity(entity_object, &self.entities)?; + self.archetypes.add_entity(entity_object)?; } }