diff --git a/voxygen/src/scene/simple.rs b/voxygen/src/scene/simple.rs index a48c877a3d..a275d39780 100644 --- a/voxygen/src/scene/simple.rs +++ b/voxygen/src/scene/simple.rs @@ -27,6 +27,7 @@ use common::{ }; use tracing::error; use vek::*; +use winit::event::MouseButton; struct VoidVol; impl BaseVol for VoidVol { @@ -82,7 +83,8 @@ pub struct Scene { figure_model_cache: FigureModelCache, figure_state: FigureState, - turning: bool, + turning_camera: bool, + turning_character: bool, char_ori: f32, } @@ -191,7 +193,8 @@ impl Scene { camera, - turning: false, + turning_camera: false, + turning_character: false, char_ori: -start_angle, } } @@ -211,12 +214,23 @@ impl Scene { self.camera.set_aspect_ratio(dims.x as f32 / dims.y as f32); true }, - Event::MouseButton(_, state) => { - self.turning = state == PressState::Pressed; + Event::MouseButton(button, state) => { + if state == PressState::Pressed { + self.turning_camera = button == MouseButton::Right; + self.turning_character = button == MouseButton::Left; + } else { + self.turning_camera = false; + self.turning_character = false; + } true }, - Event::CursorMove(delta) if self.turning => { - self.char_ori += delta.x * 0.01; + Event::CursorMove(delta) => { + if self.turning_camera { + self.camera.rotate_by(Vec3::new(delta.x * 0.01, 0.0, 0.0)) + } + if self.turning_character { + self.char_ori += delta.x * 0.01; + } true }, // All other events are unhandled