Skip to content

Remove StateTransition schedule in favor of using observers #15133

Open
@alice-i-cecile

Description

What problem does this solve or what need does it fill?

Updating the app state is a very flexible and expressive operation, which is fundamentally deferred. States typically changes only once per frame, after PostUpdate.

This can lead to unwanted delays when handling multiple dependent transitions at once.

What solution would you like?

As discussed in #15127, it would be nice to remove this meta-schedule, and instead run the various OnEnter / OnExit / OnTransition schedules on demand, leveraging the new observers. This is a good fit for "highly complex rarely exercised logic", and resolves the delay problem mentioned above while simplifying the mental model for consumers.

#15127 should be tackled in concert with this, removing NextState completely, and relying entirely on commands to handle transitions.

What alternative(s) have you considered?

Users can manually add more state transition systems to their schedule, including in their own schedules that run inside of Main. This is somewhat messy, nonstandard and hard to discover.

Additional context

Discussed briefly on Discord with @MiniaczQ here.

This design was not originally taken (including in the substates refactor) because observers didn't exist at the time!

Metadata

Assignees

No one assigned

    Labels

    A-StatesApp-level states machinesC-FeatureA new feature, making something new possibleD-ModestA "normal" level of difficulty; suitable for simple features or challenging fixesM-Needs-Migration-GuideA breaking change to Bevy's public API that needs to be noted in a migration guideS-Ready-For-ImplementationThis issue is ready for an implementation PR. Go for it!X-ControversialThere is active debate or serious implications around merging this PR

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions