Add debug frame stepping #5

Merged
EIREXE merged 3 commits from debug-frame-stepping into master 2026-09-14 20:03:48 +00:00
Showing only changes of commit 9f66d55dcc - Show all commits
+19 -3
View File
@@ -371,6 +371,7 @@ pub struct DebugToolsPlugin;
struct FrameStepState { struct FrameStepState {
requested: bool, requested: bool,
time_backup: Option<Time>, time_backup: Option<Time>,
last_step_time: Time
} }
impl Plugin for DebugToolsPlugin { impl Plugin for DebugToolsPlugin {
@@ -424,6 +425,7 @@ fn frame_step_duration(frame_rate: usize) -> Duration {
fn prepare_frame_step( fn prepare_frame_step(
settings: Res<DebugSettings>, settings: Res<DebugSettings>,
gamepads: Query<&Gamepad>, gamepads: Query<&Gamepad>,
key: Res<ButtonInput<KeyCode>>,
mut state: ResMut<FrameStepState>, mut state: ResMut<FrameStepState>,
mut time: ResMut<Time>, mut time: ResMut<Time>,
frame_rate: Res<RollbackFrameRate>, frame_rate: Res<RollbackFrameRate>,
@@ -433,10 +435,24 @@ fn prepare_frame_step(
return; return;
} }
if !settings.menu_open let pressed = gamepads
&& gamepads .iter()
.any(|gamepad| gamepad.pressed(GamepadButton::DPadDown));
let just_pressed = gamepads
.iter() .iter()
.any(|gamepad| gamepad.just_pressed(GamepadButton::DPadDown)) .any(|gamepad| gamepad.just_pressed(GamepadButton::DPadDown));
let just_pressed = key.just_pressed(KeyCode::F4) || just_pressed;
let pressed = key.pressed(KeyCode::F4) || pressed;
if just_pressed {
state.last_step_time = time.clone();
}
let can_repress = pressed && (time.elapsed() - state.last_step_time.elapsed()).as_millis() > 500;
if !settings.menu_open && (just_pressed || can_repress)
{ {
state.requested = true; state.requested = true;
} }