Improve Command(s) docs (#4994)
# Objective - Improve Command(s) docs - Fixes #4737 ## Solution - Update and improve documentation. --- - "list" -> "queue" in `Commands` doc (this better represents reality) - expand `Command` doc - update/improve `Commands::add` doc, as specified in linked issue Let me know if you want any changes!
This commit is contained in:
		
							parent
							
								
									382cd49c3b
								
							
						
					
					
						commit
						de92054bbe
					
				| @ -15,14 +15,41 @@ use std::marker::PhantomData; | |||||||
| use super::Resource; | use super::Resource; | ||||||
| 
 | 
 | ||||||
| /// A [`World`] mutation.
 | /// A [`World`] mutation.
 | ||||||
|  | ///
 | ||||||
|  | /// Should be used with [`Commands::add`].
 | ||||||
|  | ///
 | ||||||
|  | /// # Usage
 | ||||||
|  | ///
 | ||||||
|  | /// ```
 | ||||||
|  | /// # use bevy_ecs::prelude::*;
 | ||||||
|  | /// # use bevy_ecs::system::Command;
 | ||||||
|  | /// // Our world resource
 | ||||||
|  | /// #[derive(Default)]
 | ||||||
|  | /// struct Counter(u64);
 | ||||||
|  | ///
 | ||||||
|  | /// // Our custom command
 | ||||||
|  | /// struct AddToCounter(u64);
 | ||||||
|  | ///
 | ||||||
|  | /// impl Command for AddToCounter {
 | ||||||
|  | ///     fn write(self, world: &mut World) {
 | ||||||
|  | ///         let mut counter = world.get_resource_or_insert_with(Counter::default);
 | ||||||
|  | ///         counter.0 += self.0;
 | ||||||
|  | ///     }
 | ||||||
|  | /// }
 | ||||||
|  | ///
 | ||||||
|  | /// fn some_system(mut commands: Commands) {
 | ||||||
|  | ///     commands.add(AddToCounter(42));
 | ||||||
|  | /// }
 | ||||||
|  | /// ```
 | ||||||
| pub trait Command: Send + Sync + 'static { | pub trait Command: Send + Sync + 'static { | ||||||
|     fn write(self, world: &mut World); |     fn write(self, world: &mut World); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// A list of commands that runs at the end of the stage of the system that called them.
 | /// A queue of [commands](Command) that get executed at the end of the stage of the system that called them.
 | ||||||
| ///
 | ///
 | ||||||
| /// Commands are executed one at a time in an exclusive fashion.
 | /// Commands are executed one at a time in an exclusive fashion.
 | ||||||
| //// Each command can be used to modify the [`World`] in arbitrary ways:
 | ///
 | ||||||
|  | /// Each command can be used to modify the [`World`] in arbitrary ways:
 | ||||||
| /// * spawning or despawning entities
 | /// * spawning or despawning entities
 | ||||||
| /// * inserting components on new or existing entities
 | /// * inserting components on new or existing entities
 | ||||||
| /// * inserting resources
 | /// * inserting resources
 | ||||||
| @ -72,7 +99,7 @@ impl<'w, 's> Commands<'w, 's> { | |||||||
|     /// # Example
 |     /// # Example
 | ||||||
|     ///
 |     ///
 | ||||||
|     /// ```
 |     /// ```
 | ||||||
|     /// use bevy_ecs::prelude::*;
 |     /// # use bevy_ecs::prelude::*;
 | ||||||
|     ///
 |     ///
 | ||||||
|     /// #[derive(Component)]
 |     /// #[derive(Component)]
 | ||||||
|     /// struct Label(&'static str);
 |     /// struct Label(&'static str);
 | ||||||
| @ -362,40 +389,39 @@ impl<'w, 's> Commands<'w, 's> { | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /// Adds a command directly to the command list.
 |     /// Adds a command directly to the command queue.
 | ||||||
|  |     ///
 | ||||||
|  |     /// `command` can be a built-in command, custom struct that implements [`Command`] or a closure
 | ||||||
|  |     /// that takes [`&mut World`](World) as an argument.
 | ||||||
|     ///
 |     ///
 | ||||||
|     /// # Example
 |     /// # Example
 | ||||||
|     ///
 |     ///
 | ||||||
|     /// ```
 |     /// ```
 | ||||||
|     /// # use bevy_ecs::prelude::*;
 |     /// # use bevy_ecs::{system::Command, prelude::*};
 | ||||||
|     /// use bevy_ecs::system::InsertBundle;
 |     /// #[derive(Default)]
 | ||||||
|     /// #
 |     /// struct Counter(u64);
 | ||||||
|     /// # struct PlayerEntity { entity: Entity }
 |  | ||||||
|     /// # #[derive(Component)]
 |  | ||||||
|     /// # struct Health(u32);
 |  | ||||||
|     /// # #[derive(Component)]
 |  | ||||||
|     /// # struct Strength(u32);
 |  | ||||||
|     /// # #[derive(Component)]
 |  | ||||||
|     /// # struct Defense(u32);
 |  | ||||||
|     /// #
 |  | ||||||
|     /// # #[derive(Bundle)]
 |  | ||||||
|     /// # struct CombatBundle {
 |  | ||||||
|     /// #     health: Health,
 |  | ||||||
|     /// #     strength: Strength,
 |  | ||||||
|     /// #     defense: Defense,
 |  | ||||||
|     /// # }
 |  | ||||||
|     ///
 |     ///
 | ||||||
|     /// fn add_combat_stats_system(mut commands: Commands, player: Res<PlayerEntity>) {
 |     /// struct AddToCounter(u64);
 | ||||||
|     ///     commands.add(InsertBundle {
 |     ///
 | ||||||
|     ///         entity: player.entity,
 |     /// impl Command for AddToCounter {
 | ||||||
|     ///         bundle: CombatBundle {
 |     ///     fn write(self, world: &mut World) {
 | ||||||
|     ///             health: Health(100),
 |     ///         let mut counter = world.get_resource_or_insert_with(Counter::default);
 | ||||||
|     ///             strength: Strength(40),
 |     ///         counter.0 += self.0;
 | ||||||
|     ///             defense: Defense(20),
 |     ///     }
 | ||||||
|     ///         },
 |     /// }
 | ||||||
|  |     ///
 | ||||||
|  |     /// fn add_three_to_counter_system(mut commands: Commands) {
 | ||||||
|  |     ///     commands.add(AddToCounter(3));
 | ||||||
|  |     /// }
 | ||||||
|  |     /// fn add_twenty_five_to_counter_system(mut commands: Commands) {
 | ||||||
|  |     ///     commands.add(|world: &mut World| {
 | ||||||
|  |     ///         let mut counter = world.get_resource_or_insert_with(Counter::default);
 | ||||||
|  |     ///         counter.0 += 25;
 | ||||||
|     ///     });
 |     ///     });
 | ||||||
|     /// }
 |     /// }
 | ||||||
|     /// # bevy_ecs::system::assert_is_system(add_combat_stats_system);
 | 
 | ||||||
|  |     /// # bevy_ecs::system::assert_is_system(add_three_to_counter_system);
 | ||||||
|  |     /// # bevy_ecs::system::assert_is_system(add_twenty_five_to_counter_system);
 | ||||||
|     /// ```
 |     /// ```
 | ||||||
|     pub fn add<C: Command>(&mut self, command: C) { |     pub fn add<C: Command>(&mut self, command: C) { | ||||||
|         self.queue.push(command); |         self.queue.push(command); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 LoipesMas
						LoipesMas