Skip to content

Commit d99ea9f

Browse files
HoidiganItsDoot
authored andcommitted
Add a release_all function to Input. (bevyengine#5011)
Adds a `release_all` function to `Input` that releases all of the currently pressed inputs and marks them as just released.
1 parent 0ce6eea commit d99ea9f

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

crates/bevy_input/src/input.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ where
8282
}
8383
}
8484

85+
/// Registers a release for all currently pressed inputs.
86+
pub fn release_all(&mut self) {
87+
// Move all items from pressed into just_released
88+
self.just_released.extend(self.pressed.drain());
89+
}
90+
8591
/// Returns `true` if the `input` has just been pressed.
8692
pub fn just_pressed(&self, input: T) -> bool {
8793
self.just_pressed.contains(&input)
@@ -197,6 +203,17 @@ mod test {
197203
assert!(input.just_released.contains(&DummyInput::Input1));
198204
}
199205

206+
#[test]
207+
fn test_release_all() {
208+
let mut input = Input::default();
209+
input.press(DummyInput::Input1);
210+
input.press(DummyInput::Input2);
211+
input.release_all();
212+
assert!(input.pressed.is_empty());
213+
assert!(input.just_released.contains(&DummyInput::Input1));
214+
assert!(input.just_released.contains(&DummyInput::Input2));
215+
}
216+
200217
#[test]
201218
fn test_just_pressed() {
202219
let mut input = Input::default();

0 commit comments

Comments
 (0)