From a09c3691db6047ba0e2912df9508d53e34340390 Mon Sep 17 00:00:00 2001 From: Imbris Date: Fri, 24 May 2019 22:30:56 -0400 Subject: [PATCH] add pan and zoom sensitivity settings Former-commit-id: 26d2becc17cc3b9fce77e27f91834b0caf3ea77a --- voxygen/src/settings.rs | 4 ++++ voxygen/src/window.rs | 20 +++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/voxygen/src/settings.rs b/voxygen/src/settings.rs index f504fd43e3..3ba043737f 100644 --- a/voxygen/src/settings.rs +++ b/voxygen/src/settings.rs @@ -41,6 +41,8 @@ pub struct ControlSettings { pub fullscreen: VirtualKeyCode, pub screenshot: VirtualKeyCode, pub toggle_ingame_ui: VirtualKeyCode, + pub pan_sensitivity: f32, + pub zoom_sensitivity: f32, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -97,6 +99,8 @@ impl Default for Settings { fullscreen: VirtualKeyCode::F11, screenshot: VirtualKeyCode::F4, toggle_ingame_ui: VirtualKeyCode::F6, + pan_sensitivity: 1.0, + zoom_sensitivity: 1.0, }, networking: NetworkingSettings { username: "Username".to_string(), diff --git a/voxygen/src/window.rs b/voxygen/src/window.rs index c36ad3675b..63800f5d7c 100644 --- a/voxygen/src/window.rs +++ b/voxygen/src/window.rs @@ -11,6 +11,8 @@ pub struct Window { renderer: Renderer, window: glutin::GlWindow, cursor_grabbed: bool, + pub pan_sensitivity: f32, + pub zoom_sensitivity: f32, fullscreen: bool, needs_refresh_resize: bool, key_map: HashMap, @@ -62,17 +64,18 @@ impl Window { key_map.insert(settings.controls.screenshot, Key::Screenshot); key_map.insert(settings.controls.toggle_ingame_ui, Key::ToggleIngameUi); - let tmp = Ok(Self { + Ok(Self { events_loop, renderer: Renderer::new(device, factory, win_color_view, win_depth_view)?, window, cursor_grabbed: false, + pan_sensitivity: settings.controls.pan_sensitivity, + zoom_sensitivity: settings.controls.zoom_sensitivity, fullscreen: false, needs_refresh_resize: false, key_map, supplement_events: vec![], - }); - tmp + }) } pub fn renderer(&self) -> &Renderer { @@ -97,6 +100,8 @@ impl Window { let renderer = &mut self.renderer; let window = &mut self.window; let key_map = &self.key_map; + let pan_sensitivity = self.pan_sensitivity; + let zoom_sensitivity = self.zoom_sensitivity; let mut toggle_fullscreen = false; let mut take_screenshot = false; @@ -143,13 +148,14 @@ impl Window { glutin::Event::DeviceEvent { event, .. } => match event { glutin::DeviceEvent::MouseMotion { delta: (dx, dy), .. - } if cursor_grabbed => { - events.push(Event::CursorPan(Vec2::new(dx as f32, dy as f32))) - } + } if cursor_grabbed => events.push(Event::CursorPan(Vec2::new( + dx as f32 * pan_sensitivity, + dy as f32 * pan_sensitivity, + ))), glutin::DeviceEvent::MouseWheel { delta: glutin::MouseScrollDelta::LineDelta(_x, y), .. - } if cursor_grabbed => events.push(Event::Zoom(y as f32)), + } if cursor_grabbed => events.push(Event::Zoom(y as f32 * zoom_sensitivity)), _ => {} }, _ => {}