This commit is contained in:
Hanno Braun 2024-11-15 18:24:28 +01:00
parent 04bd789006
commit 8065543d8e
3 changed files with 17 additions and 26 deletions

View File

@ -7,29 +7,20 @@ use crate::{
use super::InputEvent;
/// Input handling abstraction
///
/// Takes user input and applies them to application state.
#[derive(Default)]
pub struct InputHandler;
impl InputHandler {
/// Handle an input event
pub fn handle_event(
event: InputEvent,
focus_point: FocusPoint,
camera: &mut Camera,
) {
match event {
InputEvent::Translation { previous, current } => {
apply_translation(previous, current, focus_point, camera);
}
InputEvent::Rotation { angle_x, angle_y } => {
apply_rotation(angle_x, angle_y, focus_point, camera);
}
InputEvent::Zoom(zoom_delta) => {
apply_zoom(zoom_delta, focus_point, camera);
}
pub fn handle_event(
event: InputEvent,
focus_point: FocusPoint,
camera: &mut Camera,
) {
match event {
InputEvent::Translation { previous, current } => {
apply_translation(previous, current, focus_point, camera);
}
InputEvent::Rotation { angle_x, angle_y } => {
apply_rotation(angle_x, angle_y, focus_point, camera);
}
InputEvent::Zoom(zoom_delta) => {
apply_zoom(zoom_delta, focus_point, camera);
}
}
}

View File

@ -3,4 +3,4 @@
mod event;
mod handler;
pub use self::{event::InputEvent, handler::InputHandler};
pub use self::{event::InputEvent, handler::handle_event};

View File

@ -4,7 +4,7 @@ use tracing::warn;
use crate::{
camera::{Camera, FocusPoint},
graphics::{DrawConfig, Renderer},
input::InputHandler,
input::handle_event,
InputEvent, NormalizedScreenPosition, RendererInitError, Screen,
ScreenSize,
};
@ -62,7 +62,7 @@ impl Viewer {
/// Handle an input event
pub fn handle_input_event(&mut self, event: InputEvent) {
if let Some(focus_point) = self.focus_point {
InputHandler::handle_event(event, focus_point, &mut self.camera);
handle_event(event, focus_point, &mut self.camera);
}
}