Add debug frame stepping #5
+19
-3
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user