Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_dev_tools/src/states.rs
9352 views
1
//! Tools for debugging states.
2
3
use bevy_ecs::message::MessageReader;
4
use bevy_state::state::{StateTransitionEvent, States};
5
use tracing::info;
6
7
/// Logs state transitions into console.
8
///
9
/// This system is provided to make debugging easier by tracking state changes.
10
pub fn log_transitions<S: States>(mut transitions: MessageReader<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 {
17
exited,
18
entered,
19
allow_same_state_transitions,
20
} = transition;
21
let skip_text = if exited == entered && !*allow_same_state_transitions {
22
" (disallowing same-state transitions)"
23
} else {
24
""
25
};
26
info!("{name} transition: {exited:?} => {entered:?}{skip_text}");
27
}
28
29