From 2ea1de26590e59591a27bfd887bfbd4d40b4064c Mon Sep 17 00:00:00 2001 From: Joshua Barretto Date: Tue, 16 Apr 2019 20:20:36 +0100 Subject: [PATCH 1/2] Added smooth acceleration Former-commit-id: 4dfc695e5d1485b77ef98b1f5895d3eee69c46e1 --- client/src/lib.rs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/client/src/lib.rs b/client/src/lib.rs index 04b159ff30..4a4dc91de1 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -149,17 +149,15 @@ impl Client { }); // Step 1 - if - self.state.read_storage::().get(self.player).is_some() && - self.state.read_storage::().get(self.player).is_some() && - self.state.read_storage::().get(self.player).is_some() - { - // TODO: remove this - const PLAYER_VELOCITY: f32 = 100.0; - // TODO: Set acceleration instead - self.state.write_component(self.player, comp::phys::Vel(Vec3::from(input.move_dir * PLAYER_VELOCITY) * 0.1)); + if let (Some(_), Some(vel), Some(_)) = ( + self.state.read_component_cloned::(self.player), + self.state.read_component_cloned::(self.player), + self.state.read_component_cloned::(self.player), + ) { + self.state.write_component(self.player, comp::phys::Vel(vel.0 + input.move_dir * 2.0 - vel.0.map(|e| e * e.abs() + e) * 0.03)); + if input.move_dir.magnitude() > 0.01 { - self.state.write_component(self.player, comp::phys::Dir(input.move_dir.normalized().into())); + self.state.write_component(self.player, comp::phys::Dir(vel.0.normalized() * Vec3::new(1.0, 1.0, 0.0))); self.state.write_component(self.player, comp::Animation::Run); } else { self.state.write_component(self.player, comp::Animation::Idle); From db527e64dff618633bcbe1fdddaf8dbdd14c0e9a Mon Sep 17 00:00:00 2001 From: Joshua Barretto Date: Tue, 16 Apr 2019 19:01:56 +0100 Subject: [PATCH 2/2] Improved camera attributes and focus Former-commit-id: 223f85c884c063c5cbb7d6c9f9f5c4a8c62a7ffd --- voxygen/src/scene/camera.rs | 2 +- voxygen/src/scene/mod.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/voxygen/src/scene/camera.rs b/voxygen/src/scene/camera.rs index 750bd1e359..29a2d777ec 100644 --- a/voxygen/src/scene/camera.rs +++ b/voxygen/src/scene/camera.rs @@ -21,7 +21,7 @@ impl Camera { Self { focus: Vec3::unit_z() * 10.0, ori: Vec3::zero(), - dist: 150.0, + dist: 10.0, fov: 1.3, aspect, } diff --git a/voxygen/src/scene/mod.rs b/voxygen/src/scene/mod.rs index 216601114a..b7fb9352f3 100644 --- a/voxygen/src/scene/mod.rs +++ b/voxygen/src/scene/mod.rs @@ -97,7 +97,7 @@ impl Scene { }, // Zoom the camera when a zoom event occurs Event::Zoom(delta) => { - self.camera.zoom_by(-delta); + self.camera.zoom_by(delta * 0.3); true }, // All other events are unhandled @@ -118,7 +118,7 @@ impl Scene { .unwrap_or(Vec3::zero()); // Alter camera position to match player - self.camera.set_focus_pos(player_pos); + self.camera.set_focus_pos(player_pos + Vec3::unit_z() * 1.5); // Compute camera matrices let (view_mat, proj_mat, cam_pos) = self.camera.compute_dependents();