Struct de_gui::commands::GuiCommands

source ·
pub struct GuiCommands<'w, 's> {
    commands: Commands<'w, 's>,
    text_props: Res<'w, TextProps>,
}

Fields§

§commands: Commands<'w, 's>§text_props: Res<'w, TextProps>

Implementations§

source§

impl<'w, 's> GuiCommands<'w, 's>

source

pub(crate) fn text_props(&self) -> &TextProps

Methods from Deref<Target = Commands<'w, 's>>§

pub fn reborrow(&mut self) -> Commands<'w, '_>

Returns a [Commands] with a smaller lifetime. This is useful if you have &mut Commands but need Commands.

§Examples
fn my_system(mut commands: Commands) {
    // We do our initialization in a separate function,
    // which expects an owned `Commands`.
    do_initialization(commands.reborrow());

    // Since we only reborrowed the commands instead of moving them, we can still use them.
    commands.spawn_empty();
}

pub fn append(&mut self, other: &mut CommandQueue)

Take all commands from other and append them to self, leaving other empty

pub fn spawn_empty(&mut self) -> EntityCommands<'_>

Pushes a [Command] to the queue for creating a new empty [Entity], and returns its corresponding [EntityCommands].

See [World::spawn_empty] for more details.

§Example

#[derive(Component)]
struct Label(&'static str);
#[derive(Component)]
struct Strength(u32);
#[derive(Component)]
struct Agility(u32);

fn example_system(mut commands: Commands) {
    // Create a new empty entity and retrieve its id.
    let empty_entity = commands.spawn_empty().id();

    // Create another empty entity, then add some component to it
    commands.spawn_empty()
        // adds a new component bundle to the entity
        .insert((Strength(1), Agility(2)))
        // adds a single component to the entity
        .insert(Label("hello world"));
}
§See also
  • spawn to spawn an entity with a bundle.
  • spawn_batch to spawn entities with a bundle each.

pub fn get_or_spawn(&mut self, entity: Entity) -> EntityCommands<'_>

Pushes a [Command] to the queue for creating a new [Entity] if the given one does not exists, and returns its corresponding [EntityCommands].

This method silently fails by returning [EntityCommands] even if the given Entity cannot be spawned.

See [World::get_or_spawn] for more details.

§Note

Spawning a specific entity value is rarely the right choice. Most apps should favor [Commands::spawn]. This method should generally only be used for sharing entities across apps, and only when they have a scheme worked out to share an ID space (which doesn’t happen by default).

pub fn spawn<T>(&mut self, bundle: T) -> EntityCommands<'_>
where T: Bundle,

Pushes a [Command] to the queue for creating a new entity with the given [Bundle]’s components, and returns its corresponding [EntityCommands].

§Example
use bevy_ecs::prelude::*;

#[derive(Component)]
struct Component1;
#[derive(Component)]
struct Component2;
#[derive(Component)]
struct Label(&'static str);
#[derive(Component)]
struct Strength(u32);
#[derive(Component)]
struct Agility(u32);

#[derive(Bundle)]
struct ExampleBundle {
    a: Component1,
    b: Component2,
}

fn example_system(mut commands: Commands) {
    // Create a new entity with a single component.
    commands.spawn(Component1);

    // Create a new entity with a component bundle.
    commands.spawn(ExampleBundle {
        a: Component1,
        b: Component2,
    });

    commands
        // Create a new entity with two components using a "tuple bundle".
        .spawn((Component1, Component2))
        // `spawn returns a builder, so you can insert more bundles like this:
        .insert((Strength(1), Agility(2)))
        // or insert single components like this:
        .insert(Label("hello world"));
}
§See also

pub fn entity(&mut self, entity: Entity) -> EntityCommands<'_>

Returns the [EntityCommands] for the requested [Entity].

§Panics

This method panics if the requested entity does not exist.

§Example
use bevy_ecs::prelude::*;

#[derive(Component)]
struct Label(&'static str);
#[derive(Component)]
struct Strength(u32);
#[derive(Component)]
struct Agility(u32);

fn example_system(mut commands: Commands) {
    // Create a new, empty entity
    let entity = commands.spawn_empty().id();

    commands.entity(entity)
        // adds a new component bundle to the entity
        .insert((Strength(1), Agility(2)))
        // adds a single component to the entity
        .insert(Label("hello world"));
}
§See also

pub fn get_entity(&mut self, entity: Entity) -> Option<EntityCommands<'_>>

Returns the [EntityCommands] for the requested [Entity], if it exists.

Returns None if the entity does not exist.

This method does not guarantee that EntityCommands will be successfully applied, since another command in the queue may delete the entity before them.

§Example
use bevy_ecs::prelude::*;

#[derive(Component)]
struct Label(&'static str);
fn example_system(mut commands: Commands) {
    // Create a new, empty entity
    let entity = commands.spawn_empty().id();

    // Get the entity if it still exists, which it will in this case
    if let Some(mut entity_commands) = commands.get_entity(entity) {
        // adds a single component to the entity
        entity_commands.insert(Label("hello world"));
    }
}
§See also
  • entity for the panicking version.

pub fn spawn_batch<I>(&mut self, bundles_iter: I)
where I: IntoIterator + Send + Sync + 'static, <I as IntoIterator>::Item: Bundle,

Pushes a [Command] to the queue for creating entities with a particular [Bundle] type.

bundles_iter is a type that can be converted into a [Bundle] iterator (it can also be a collection).

This method is equivalent to iterating bundles_iter and calling spawn on each bundle, but it is faster due to memory pre-allocation.

§Example
commands.spawn_batch(vec![
    (
        Name("Alice".to_string()),
        Score(0),
    ),
    (
        Name("Bob".to_string()),
        Score(0),
    ),
]);
§See also
  • spawn to spawn an entity with a bundle.
  • spawn_empty to spawn an entity without any components.

pub fn insert_or_spawn_batch<I, B>(&mut self, bundles: I)
where I: IntoIterator<Item = (Entity, B)> + Send + Sync + 'static, B: Bundle,

Pushes a [Command] to the queue for creating entities, if needed, and for adding a bundle to each entity.

bundles_iter is a type that can be converted into an ([Entity], [Bundle]) iterator (it can also be a collection).

When the command is applied, for each (Entity, Bundle) pair in the given bundles_iter, the Entity is spawned, if it does not exist already. Then, the Bundle is added to the entity.

This method is equivalent to iterating bundles_iter, calling get_or_spawn for each bundle, and passing it to insert, but it is faster due to memory pre-allocation.

§Note

Spawning a specific entity value is rarely the right choice. Most apps should use [Commands::spawn_batch]. This method should generally only be used for sharing entities across apps, and only when they have a scheme worked out to share an ID space (which doesn’t happen by default).

pub fn init_resource<R>(&mut self)
where R: Resource + FromWorld,

Pushes a [Command] to the queue for inserting a [Resource] in the [World] with an inferred value.

The inferred value is determined by the [FromWorld] trait of the resource. When the command is applied, if the resource already exists, nothing happens.

See [World::init_resource] for more details.

§Example
commands.init_resource::<Scoreboard>();

pub fn insert_resource<R>(&mut self, resource: R)
where R: Resource,

Pushes a [Command] to the queue for inserting a [Resource] in the [World] with a specific value.

This will overwrite any previous value of the same resource type.

See [World::insert_resource] for more details.

§Example
commands.insert_resource(Scoreboard {
    current_score: 0,
    high_score: 0,
});

pub fn remove_resource<R>(&mut self)
where R: Resource,

Pushes a [Command] to the queue for removing a [Resource] from the [World].

See [World::remove_resource] for more details.

§Example
commands.remove_resource::<Scoreboard>();

pub fn run_system(&mut self, id: SystemId)

Runs the system corresponding to the given [SystemId]. Systems are ran in an exclusive and single threaded way. Running slow systems can become a bottleneck.

Calls World::run_system.

There is no way to get the output of a system when run as a command, because the execution of the system happens later. To get the output of a system, use [World::run_system] or [World::run_system_with_input] instead of running the system as a command.

pub fn run_system_with_input<I>(&mut self, id: SystemId<I>, input: I)
where I: 'static + Send,

Runs the system corresponding to the given [SystemId]. Systems are ran in an exclusive and single threaded way. Running slow systems can become a bottleneck.

Calls World::run_system_with_input.

There is no way to get the output of a system when run as a command, because the execution of the system happens later. To get the output of a system, use [World::run_system] or [World::run_system_with_input] instead of running the system as a command.

pub fn add<C>(&mut self, command: C)
where C: Command,

Pushes a generic [Command] to the command queue.

command can be a built-in command, custom struct that implements [Command] or a closure that takes &mut World as an argument.

§Example
#[derive(Resource, Default)]
struct Counter(u64);

struct AddToCounter(u64);

impl Command for AddToCounter {
    fn apply(self, world: &mut World) {
        let mut counter = world.get_resource_or_insert_with(Counter::default);
        counter.0 += self.0;
    }
}

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;
    });
}

Trait Implementations§

source§

impl<'w, 's> BodyTextCommands<'w, 's> for GuiCommands<'w, 's>

source§

fn spawn_body_text( &mut self, style: OuterStyle, caption: impl Into<String> ) -> EntityCommands<'_>

source§

impl<'w, 's> ButtonCommands<'w, 's> for GuiCommands<'w, 's>

source§

fn spawn_button( &mut self, style: OuterStyle, caption: impl Into<String> ) -> EntityCommands<'_>

source§

impl<'w, 's> Deref for GuiCommands<'w, 's>

§

type Target = Commands<'w, 's>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<'w, 's> DerefMut for GuiCommands<'w, 's>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<'w, 's> LabelCommands<'w, 's> for GuiCommands<'w, 's>

source§

fn spawn_label( &mut self, style: OuterStyle, caption: impl Into<String> ) -> EntityCommands<'_>

source§

impl SystemParam for GuiCommands<'_, '_>

§

type State = FetchState

Used to store data which persists across invocations of a system.
§

type Item<'w, 's> = GuiCommands<'w, 's>

The item type returned when constructing this system param. The value of this associated type should be Self, instantiated with new lifetimes. Read more
source§

fn init_state(world: &mut World, system_meta: &mut SystemMeta) -> Self::State

Registers any [World] access used by this [SystemParam] and creates a new instance of this param’s State.
source§

fn new_archetype( state: &mut Self::State, archetype: &Archetype, system_meta: &mut SystemMeta )

For the specified [Archetype], registers the components accessed by this [SystemParam] (if applicable).
source§

fn apply(state: &mut Self::State, system_meta: &SystemMeta, world: &mut World)

Applies any deferred mutations stored in this [SystemParam]’s state. This is used to apply Commands during apply_deferred.
source§

unsafe fn get_param<'w, 's>( state: &'s mut Self::State, system_meta: &SystemMeta, world: UnsafeWorldCell<'w>, change_tick: Tick ) -> Self::Item<'w, 's>

Creates a parameter to be passed into a SystemParamFunction. Read more
source§

impl<'w, 's> TextBoxCommands<'w, 's> for GuiCommands<'w, 's>

source§

fn spawn_text_box( &mut self, style: OuterStyle, secret: bool ) -> EntityCommands<'_>

source§

impl<'w, 's> ReadOnlySystemParam for GuiCommands<'w, 's>
where Commands<'w, 's>: ReadOnlySystemParam, Res<'w, TextProps>: ReadOnlySystemParam,

Auto Trait Implementations§

§

impl<'w, 's> Freeze for GuiCommands<'w, 's>

§

impl<'w, 's> !RefUnwindSafe for GuiCommands<'w, 's>

§

impl<'w, 's> Send for GuiCommands<'w, 's>

§

impl<'w, 's> Sync for GuiCommands<'w, 's>

§

impl<'w, 's> Unpin for GuiCommands<'w, 's>

§

impl<'w, 's> !UnwindSafe for GuiCommands<'w, 's>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U

Return the T [ShaderType] for self. When used in [AsBindGroup] derives, it is safe to assume that all images in self exist.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

§

impl<T> Settings for T
where T: 'static + Send + Sync,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,