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);
|
||||
|
||||
/// 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> {
|
||||
@ -96,9 +96,10 @@ impl<'w, 's, 'a> DespawnRecursiveExt for EntityCommands<'w, 's, 'a> {
|
||||
self.commands().add(DespawnRecursive { entity });
|
||||
}
|
||||
|
||||
fn despawn_descendants(&mut self) {
|
||||
fn despawn_descendants(&mut self) -> &mut Self {
|
||||
let entity = self.id();
|
||||
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);
|
||||
}
|
||||
|
||||
fn despawn_descendants(&mut self) {
|
||||
fn despawn_descendants(&mut self) -> &mut Self {
|
||||
let entity = self.id();
|
||||
|
||||
#[cfg(feature = "trace")]
|
||||
@ -130,6 +131,7 @@ impl<'w> DespawnRecursiveExt for EntityMut<'w> {
|
||||
self.world_scope(|world| {
|
||||
despawn_children_recursive(world, entity);
|
||||
});
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
@ -246,4 +248,32 @@ mod tests {
|
||||
// The child should be despawned.
|
||||
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