leafwing_input_manager/
common_conditions.rs1use crate::{prelude::ActionState, Actionlike};
4use bevy::prelude::Res;
5
6pub fn action_toggle_active<A>(default: bool, action: A) -> impl FnMut(Res<ActionState<A>>) -> bool
8where
9 A: Actionlike + Clone,
10{
11 let mut active = default;
12 move |action_state: Res<ActionState<A>>| {
13 active ^= action_state.just_pressed(&action);
14 active
15 }
16}
17
18pub fn action_pressed<A>(action: A) -> impl FnMut(Res<ActionState<A>>) -> bool
20where
21 A: Actionlike + Clone,
22{
23 move |action_state: Res<ActionState<A>>| action_state.pressed(&action)
24}
25
26pub fn action_just_pressed<A>(action: A) -> impl FnMut(Res<ActionState<A>>) -> bool
28where
29 A: Actionlike + Clone,
30{
31 move |action_state: Res<ActionState<A>>| action_state.just_pressed(&action)
32}
33
34pub fn action_just_released<A>(action: A) -> impl FnMut(Res<ActionState<A>>) -> bool
36where
37 A: Actionlike + Clone,
38{
39 move |action_state: Res<ActionState<A>>| action_state.just_released(&action)
40}