Skip to content

DualAxislikeChord not cleared correctly if action state used as Resource #740

@michalmoc

Description

@michalmoc

Version

0.20

Operating system & version

Arch Linux

What you did

pub struct InputPlugin;

impl Plugin for InputPlugin {
    fn build(&self, app: &mut App) {
        let input_map = InputMap::<Action>::default().with_dual_axis(
            Action::MoveCamera,
            DualAxislikeChord {
                button: Box::new(ModifierKey::Shift),
                dual_axis: Box::new(VirtualDPad::arrow_keys()),
            },
        );

        app.add_plugins(InputManagerPlugin::<Action>::default())
            .insert_resource(ActionState::<Action>::default())
            .insert_resource(input_map)
            .add_systems(Update, control);
    }
}

#[derive(Actionlike, PartialEq, Eq, Clone, Copy, Hash, Debug, Reflect)]
enum Action {
    #[actionlike(DualAxis)]
    MoveCamera,
}

fn control(actions: Res<ActionState<Action>>) {
    if let Some(data) = actions.dual_axis_data(&Action::MoveCamera) {
        println!("Movement {} {}", data.pair.x, data.pair.y);
    }
}

What you expected to happen

When I stop pressing shift+arrow "Movement" should no longer keep being printed

What actually happened

When I press shift+arrow and then release it, "Movement" still keeps being printed, with axes value (0, 0).

Additional information

Example log:

2026-02-21T17:41:32.803276Z  INFO bevy_winit::system: Creating new window yarpg (0v0)
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 1 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
Movement 0 0
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions