Change despawn_descendants to return &mut Self (#8928)
# Objective - Change despawn descendants to return self (#8883). ## Solution - Change function signature `despawn_descendants` under trait `DespawnRecursiveExt`. - Add single extra test `spawn_children_after_despawn_descendants` (May be unnecessary) --------- Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
This commit is contained in:
parent
70f91b2b9e
commit
29f7293e30
@ -86,7 +86,7 @@ pub trait DespawnRecursiveExt {
|
|||||||
fn despawn_recursive(self);
|
fn despawn_recursive(self);
|
||||||
|
|
||||||
/// Despawns all descendants of the given entity.
|
/// Despawns all descendants of the given entity.
|
||||||
fn despawn_descendants(&mut self);
|
fn despawn_descendants(&mut self) -> &mut Self;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'w, 's, 'a> DespawnRecursiveExt for EntityCommands<'w, 's, 'a> {
|
impl<'w, 's, 'a> DespawnRecursiveExt for EntityCommands<'w, 's, 'a> {
|
||||||
@ -96,9 +96,10 @@ impl<'w, 's, 'a> DespawnRecursiveExt for EntityCommands<'w, 's, 'a> {
|
|||||||
self.commands().add(DespawnRecursive { entity });
|
self.commands().add(DespawnRecursive { entity });
|
||||||
}
|
}
|
||||||
|
|
||||||
fn despawn_descendants(&mut self) {
|
fn despawn_descendants(&mut self) -> &mut Self {
|
||||||
let entity = self.id();
|
let entity = self.id();
|
||||||
self.commands().add(DespawnChildrenRecursive { entity });
|
self.commands().add(DespawnChildrenRecursive { entity });
|
||||||
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,7 +118,7 @@ impl<'w> DespawnRecursiveExt for EntityMut<'w> {
|
|||||||
despawn_with_children_recursive(self.into_world_mut(), entity);
|
despawn_with_children_recursive(self.into_world_mut(), entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn despawn_descendants(&mut self) {
|
fn despawn_descendants(&mut self) -> &mut Self {
|
||||||
let entity = self.id();
|
let entity = self.id();
|
||||||
|
|
||||||
#[cfg(feature = "trace")]
|
#[cfg(feature = "trace")]
|
||||||
@ -130,6 +131,7 @@ impl<'w> DespawnRecursiveExt for EntityMut<'w> {
|
|||||||
self.world_scope(|world| {
|
self.world_scope(|world| {
|
||||||
despawn_children_recursive(world, entity);
|
despawn_children_recursive(world, entity);
|
||||||
});
|
});
|
||||||
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,4 +248,32 @@ mod tests {
|
|||||||
// The child should be despawned.
|
// The child should be despawned.
|
||||||
assert!(world.get_entity(child).is_none());
|
assert!(world.get_entity(child).is_none());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn spawn_children_after_despawn_descendants() {
|
||||||
|
let mut world = World::default();
|
||||||
|
let mut queue = CommandQueue::default();
|
||||||
|
let mut commands = Commands::new(&mut queue, &world);
|
||||||
|
|
||||||
|
let parent = commands.spawn_empty().id();
|
||||||
|
let child = commands.spawn_empty().id();
|
||||||
|
|
||||||
|
commands
|
||||||
|
.entity(parent)
|
||||||
|
.add_child(child)
|
||||||
|
.despawn_descendants()
|
||||||
|
.with_children(|parent| {
|
||||||
|
parent.spawn_empty();
|
||||||
|
parent.spawn_empty();
|
||||||
|
});
|
||||||
|
|
||||||
|
queue.apply(&mut world);
|
||||||
|
|
||||||
|
// The parent's Children component should still have two children.
|
||||||
|
let children = world.entity(parent).get::<Children>();
|
||||||
|
assert!(children.is_some());
|
||||||
|
assert!(children.unwrap().len() == 2_usize);
|
||||||
|
// The original child should be despawned.
|
||||||
|
assert!(world.get_entity(child).is_none());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user