Crate bevy_state

Source
Expand description

In Bevy, states are app-wide interdependent, finite state machines that are generally used to model the large scale structure of your program: whether a game is paused, if the player is in combat, if assets are loaded and so on.

This module provides 3 distinct types of state, all of which implement the States trait:

  • Standard States can only be changed by manually setting the NextState<S> resource. These states are the baseline on which the other state types are built, and can be used on their own for many simple patterns. See the states example for a simple use case.
  • SubStates are children of other states - they can be changed manually using NextState<S>, but are removed from the World if the source states aren’t in the right state. See the sub_states example for a simple use case based on the derive macro, or read the trait docs for more complex scenarios.
  • ComputedStates are fully derived from other states - they provide a compute method that takes in the source states and returns their derived value. They are particularly useful for situations where a simplified view of the source states is necessary - such as having an InAMenu computed state, derived from a source state that defines multiple distinct menus. See the computed state example to see usage samples for these states.

Most of the utilities around state involve running systems during transitions between states, or determining whether to run certain systems, though they can be used more directly as well. This makes it easier to transition between menus, add loading screens, pause games, and more.

Specifically, Bevy provides the following utilities:

Modules§

app
Provides App and SubApp with state installation methods
commands
Provides extension methods for Commands.
condition
Provides definitions for the runtime conditions that interact with the state system
prelude
The state prelude.
reflect
Provides definitions for the basic traits required by the state system
state
Provides definitions for the basic traits required by the state system
state_scoped
Provides StateScoped and clear_state_scoped_entities for managing lifetime of entities.
state_scoped_events
Provides App and SubApp with methods for registering state-scoped events.