Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 7m43s
64 lines
1.7 KiB
Rust
64 lines
1.7 KiB
Rust
use std::collections::HashMap;
|
|
|
|
use keyboard_state::KeyboardState;
|
|
use mouse_state::MouseState;
|
|
use virtual_binding::VirtualBinding;
|
|
use virtual_input::VirtualInput;
|
|
use winit::event::WindowEvent;
|
|
|
|
pub mod keyboard_state;
|
|
pub mod mouse_state;
|
|
pub mod virtual_binding;
|
|
pub mod virtual_input;
|
|
pub mod virtual_state;
|
|
|
|
#[derive(Default)]
|
|
pub struct InputManager {
|
|
keyboard_state: KeyboardState,
|
|
mouse_state: MouseState,
|
|
virtual_input: VirtualInput,
|
|
}
|
|
|
|
impl InputManager {
|
|
pub fn process_window_event(&mut self, event: &WindowEvent) {
|
|
match event {
|
|
WindowEvent::KeyboardInput { event, .. } => {
|
|
self.keyboard_state
|
|
.process_window_event(event, &mut self.virtual_input);
|
|
}
|
|
WindowEvent::CursorMoved { position, .. } => {
|
|
self.mouse_state.process_window_event(position);
|
|
}
|
|
_ => {}
|
|
}
|
|
}
|
|
|
|
/// Updates deltas before running update
|
|
pub fn update(&mut self) {
|
|
self.mouse_state.update(&mut self.virtual_input);
|
|
}
|
|
|
|
pub fn get_mouse_state(&self) -> &MouseState {
|
|
&self.mouse_state
|
|
}
|
|
|
|
pub fn get_keyboard_state(&self) -> &KeyboardState {
|
|
&self.keyboard_state
|
|
}
|
|
|
|
pub fn get_virtual_input(&self) -> &VirtualInput {
|
|
&self.virtual_input
|
|
}
|
|
|
|
pub fn add_virtual_binding(&mut self, value_name: String, binding: VirtualBinding) {
|
|
self.virtual_input.add_binding(value_name, binding);
|
|
}
|
|
|
|
pub fn add_virtual_bindings(&mut self, value_name: String, bindings: Vec<VirtualBinding>) {
|
|
self.virtual_input.add_bindings(value_name, bindings);
|
|
}
|
|
|
|
pub fn get_virtual_input_state(&self, value_name: &str) -> f32 {
|
|
self.virtual_input.get_state(value_name)
|
|
}
|
|
}
|