StateMachine

Struct StateMachine 

Source
pub struct StateMachine { /* private fields */ }
Expand description

State machine component.

Entities with this component will have components (the states) added and removed based on the transitions that you add. Build one with StateMachine::default, StateMachine::trans, and other methods.

Implementations§

Source§

impl StateMachine

Source

pub fn with_state<S: Clone + Component>(self) -> Self

Registers a state. This is only necessary for states that are not used in any transitions.

Source

pub fn trans<S: EntityState, Marker>( self, trigger: impl IntoTrigger<Marker>, state: impl Clone + Component, ) -> Self

Adds a transition to the state machine. When the entity is in the state given as a type parameter, and the given trigger occurs, it will transition to the state given as a function parameter. Elide the Marker type parameter with _. Transitions have priority in the order they are added.

Source

pub fn trans_builder<Prev: EntityState, Trig: IntoTrigger<TrigMarker>, Next: Clone + Component, TrigMarker, BuildMarker>( self, trigger: Trig, builder: impl IntoSystem<Trans<Prev, <<Trig::Trigger as EntityTrigger>::Out as TriggerOut>::Ok>, Next, BuildMarker>, ) -> Self

Adds a transition builder to the state machine. When the entity is in Prev state, and Trig occurs, the given builder will be run on Trig::Ok. If the builder returns Some(Next), the machine will transition to that Next state.

Source

pub fn on_enter_to<Prev: EntityState, Next: EntityState>( self, on_enter: impl 'static + Fn(&mut EntityCommands<'_>) + Send + Sync, ) -> Self

Adds an on-enter event to the state machine. Whenever the state machine transitions from the given previous state to the given next state, it will run the event.

Source

pub fn on_enter<Next: EntityState>( self, on_enter: impl 'static + Fn(&mut EntityCommands<'_>) + Send + Sync, ) -> Self

Adds an on-enter event to the state machine. Whenever the state machine transitions from any previous state to the given next state, it will run the event.

Source

pub fn on_exit_from<Prev: EntityState, Next: EntityState>( self, on_exit: impl 'static + Fn(&mut EntityCommands<'_>) + Send + Sync, ) -> Self

Adds an on-enter event to the state machine. Whenever the state machine transitions from the given previous state to the given next state, it will run the event.

Source

pub fn on_exit<Prev: EntityState>( self, on_exit: impl 'static + Fn(&mut EntityCommands<'_>) + Send + Sync, ) -> Self

Adds an on-exit event to the state machine. Whenever the state machine transitions from the given previous state to any next state, it will run the event.

Source

pub fn command_on_enter_to<Prev: EntityState, Next: EntityState>( self, command: impl Clone + Command + Sync, ) -> Self

Adds an on-enter command to the state machine. Whenever the state machine transitions from the given previous state to the given next state, it will run the command.

Source

pub fn command_on_enter<Next: EntityState>( self, command: impl Clone + Command + Sync, ) -> Self

Adds an on-enter command to the state machine. Whenever the state machine transitions from any previous state to the given next state, it will run the command.

Source

pub fn command_on_exit_from<Prev: EntityState, Next: EntityState>( self, command: impl Clone + Command + Sync, ) -> Self

Adds an on-exit command to the state machine. Whenever the state machine transitions from the given previous state to the given next state, it will run the command.

Source

pub fn command_on_exit<Prev: EntityState>( self, command: impl Clone + Command + Sync, ) -> Self

Adds an on-exit command to the state machine. Whenever the state machine transitions from the given previous state to any next state, it will run the command.

Source

pub fn set_trans_logging(self, log_transitions: bool) -> Self

Sets whether transitions are logged to the console

Trait Implementations§

Source§

impl Component for StateMachine
where Self: Send + Sync + 'static,

Source§

const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table

A constant indicating the storage type used for this component.
Source§

type Mutability = Mutable

A marker type to assist Bevy with determining if this component is mutable, or immutable. Mutable components will have Component<Mutability = Mutable>, while immutable components will instead have Component<Mutability = Immutable>. Read more
Source§

fn register_required_components( _requiree: ComponentId, required_components: &mut RequiredComponentsRegistrator<'_, '_>, )

Registers required components. Read more
Source§

fn clone_behavior() -> ComponentCloneBehavior

Called when registering this component, allowing to override clone function (or disable cloning altogether) for this component. Read more
Source§

fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_add ComponentHook for this Component if one is defined.
Source§

fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_insert ComponentHook for this Component if one is defined.
Source§

fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_replace ComponentHook for this Component if one is defined.
Source§

fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_remove ComponentHook for this Component if one is defined.
Source§

fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_despawn ComponentHook for this Component if one is defined.
Source§

fn map_entities<E>(_this: &mut Self, _mapper: &mut E)
where E: EntityMapper,

Maps the entities on this component using the given EntityMapper. This is used to remap entities in contexts like scenes and entity cloning. When deriving Component, this is populated by annotating fields containing entities with #[entities] Read more
Source§

impl Default for StateMachine

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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
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
Source§

impl<C> Bundle for C
where C: Component,

Source§

fn component_ids( components: &mut ComponentsRegistrator<'_>, ids: &mut impl FnMut(ComponentId), )

Source§

fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )

Gets this Bundle’s component ids. This will be None if the component has not been registered.
Source§

impl<C> BundleFromComponents for C
where C: Component,

Source§

unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> C
where F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a>,

Source§

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

Source§

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

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

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

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

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

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

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

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

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<C> DynamicBundle for C
where C: Component,

Source§

type Effect = ()

An operation on the entity that happens after inserting this bundle.
Source§

unsafe fn get_components( ptr: MovingPtr<'_, C>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), ) -> <C as DynamicBundle>::Effect

Moves the components out of the bundle. Read more
Source§

unsafe fn apply_effect( _ptr: MovingPtr<'_, MaybeUninit<C>>, _entity: &mut EntityWorldMut<'_>, )

Applies the after-effects of spawning this bundle. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromWorld for T
where T: Default,

Source§

fn from_world(_world: &mut World) -> T

Creates Self using default().

Source§

impl<T> Instrument for T

Source§

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

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

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> IntoResult<T> for T

Source§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Source§

impl<A> Is for A
where A: Any,

Source§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
Source§

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

Source§

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

Source§

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.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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