Skip to content

Commit 984ce3f

Browse files
committed
Add Input::reset_all (#5015)
Adds a `reset_all` method to reset `pressed`, `just_pressed`, and `just_released` on the `Input`. Fixes #3383
1 parent 9089c8b commit 984ce3f

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

crates/bevy_input/src/input.rs

+27
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,18 @@ where
129129
self.just_released.remove(&input);
130130
}
131131

132+
/// Clears the `pressed`, `just_pressed`, and `just_released` data for every input.
133+
///
134+
/// See also [`Input::clear`] for simulating elapsed time steps.
135+
pub fn reset_all(&mut self) {
136+
self.pressed.clear();
137+
self.just_pressed.clear();
138+
self.just_released.clear();
139+
}
140+
132141
/// Clears the `just pressed` and `just released` data for every input.
142+
///
143+
/// See also [`Input::reset_all`] for a full reset.
133144
pub fn clear(&mut self) {
134145
self.just_pressed.clear();
135146
self.just_released.clear();
@@ -301,6 +312,22 @@ mod test {
301312
assert!(!input.just_released(DummyInput::Input1));
302313
}
303314

315+
#[test]
316+
fn test_reset_all() {
317+
let mut input = Input::default();
318+
319+
input.press(DummyInput::Input1);
320+
input.press(DummyInput::Input2);
321+
input.release(DummyInput::Input2);
322+
assert!(input.pressed.contains(&DummyInput::Input1));
323+
assert!(input.just_pressed.contains(&DummyInput::Input1));
324+
assert!(input.just_released.contains(&DummyInput::Input2));
325+
input.reset_all();
326+
assert!(input.pressed.is_empty());
327+
assert!(input.just_pressed.is_empty());
328+
assert!(input.just_released.is_empty());
329+
}
330+
304331
#[test]
305332
fn test_clear() {
306333
let mut input = Input::default();

0 commit comments

Comments
 (0)