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
	 Anby
						Anby