bevy_dev_tools/
states.rs

1//! Tools for debugging states.
2
3use bevy_ecs::event::EventReader;
4use bevy_state::state::{StateTransitionEvent, States};
5use tracing::info;
6
7/// Logs state transitions into console.
8///
9/// This system is provided to make debugging easier by tracking state changes.
10pub fn log_transitions<S: States>(mut transitions: EventReader<StateTransitionEvent<S>>) {
11    // State internals can generate at most one event (of type) per frame.
12    let Some(transition) = transitions.read().last() else {
13        return;
14    };
15    let name = core::any::type_name::<S>();
16    let StateTransitionEvent { exited, entered } = transition;
17    info!("{} transition: {:?} => {:?}", name, exited, entered);
18}