input: Add support for Axis, Mouse Button, MouseWheel
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 7m50s

This commit is contained in:
Florian RICHER 2025-05-27 19:11:28 +02:00
parent 8c42e7b139
commit b0f82b0714
Signed by: florian.richer
GPG key ID: C73D37CBED7BFC77
9 changed files with 308 additions and 160 deletions

View file

@ -1,11 +1,10 @@
use core::input::{
InputManager,
virtual_binding::{AxisDirection, VirtualBinding},
};
use core::input::{AxisDirection, InputManager, VirtualBinding};
use std::collections::HashMap;
use vulkano::device::{DeviceExtensions, DeviceFeatures};
use vulkano_util::context::{VulkanoConfig, VulkanoContext};
use winit::{
event::MouseButton,
event_loop::{ControlFlow, EventLoop},
keyboard::{KeyCode, PhysicalKey},
};
@ -16,29 +15,50 @@ mod game;
fn main() {
env_logger::init();
let mut input_manager = InputManager::default();
input_manager.add_virtual_bindings(
"move_forward".to_string(),
vec![
VirtualBinding::Keyboard(PhysicalKey::Code(KeyCode::KeyW), AxisDirection::Positive),
VirtualBinding::Keyboard(PhysicalKey::Code(KeyCode::KeyS), AxisDirection::Negative),
],
);
input_manager.add_virtual_bindings(
"move_right".to_string(),
vec![
VirtualBinding::Keyboard(PhysicalKey::Code(KeyCode::KeyD), AxisDirection::Positive),
VirtualBinding::Keyboard(PhysicalKey::Code(KeyCode::KeyA), AxisDirection::Negative),
],
);
input_manager.add_virtual_bindings(
"mouse_x".to_string(),
vec![VirtualBinding::MouseX(AxisDirection::Positive)],
);
input_manager.add_virtual_bindings(
"mouse_y".to_string(),
vec![VirtualBinding::MouseY(AxisDirection::Positive)],
);
let input_manager = InputManager::new(HashMap::from([
(
"move_forward".to_string(),
vec![
VirtualBinding::Keyboard(PhysicalKey::Code(KeyCode::KeyW), AxisDirection::Normal),
VirtualBinding::Keyboard(PhysicalKey::Code(KeyCode::KeyS), AxisDirection::Invert),
VirtualBinding::Axis(0, AxisDirection::Normal, 1.0),
],
),
(
"move_right".to_string(),
vec![
VirtualBinding::Keyboard(PhysicalKey::Code(KeyCode::KeyD), AxisDirection::Normal),
VirtualBinding::Keyboard(PhysicalKey::Code(KeyCode::KeyA), AxisDirection::Invert),
VirtualBinding::Axis(1, AxisDirection::Normal, 1.0),
],
),
(
"mouse_x".to_string(),
vec![VirtualBinding::MouseX(AxisDirection::Normal)],
),
(
"mouse_y".to_string(),
vec![VirtualBinding::MouseY(AxisDirection::Normal)],
),
(
"mouse_wheel".to_string(),
vec![VirtualBinding::MouseWheelY(AxisDirection::Normal)],
),
(
"mouse_left".to_string(),
vec![VirtualBinding::MouseButton(
MouseButton::Left,
AxisDirection::Normal,
)],
),
(
"mouse_right".to_string(),
vec![VirtualBinding::MouseButton(
MouseButton::Right,
AxisDirection::Normal,
)],
),
]));
let device_extensions = DeviceExtensions {
khr_swapchain: true,