From d13c218dca6e564dde3d222c369c35d7148c7b7f Mon Sep 17 00:00:00 2001 From: timokoesters Date: Tue, 17 Mar 2020 16:01:12 +0100 Subject: [PATCH] Stop first person bounce in air --- voxygen/src/scene/mod.rs | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/voxygen/src/scene/mod.rs b/voxygen/src/scene/mod.rs index a5517e134c..947fcb3ed3 100644 --- a/voxygen/src/scene/mod.rs +++ b/voxygen/src/scene/mod.rs @@ -174,26 +174,27 @@ impl Scene { gamma: f32, ) { // Get player position. - let player_pos = scene_data - .state - .ecs() + let ecs = scene_data.state.ecs(); + + let player_pos = ecs .read_storage::() .get(scene_data.player_entity) .map_or(Vec3::zero(), |pos| pos.0); - let player_rolling = scene_data - .state - .ecs() + let player_rolling = ecs .read_storage::() .get(scene_data.player_entity) .map_or(false, |cs| cs.is_dodge()); - let player_running = scene_data - .state - .ecs() + let is_running = ecs .read_storage::() .get(scene_data.player_entity) - .map_or(false, |v| v.0.magnitude_squared() > 0.5); + .map(|v| v.0.magnitude_squared() > 0.5); + + let on_ground = ecs + .read_storage::() + .get(scene_data.player_entity) + .map(|p| p.on_ground); let player_scale = match scene_data .state @@ -219,7 +220,7 @@ impl Scene { CameraMode::FirstPerson => { if player_rolling { player_scale * 0.8 - } else if player_running { + } else if is_running.unwrap_or(false) && on_ground.unwrap_or(false) { player_scale * 1.6 + (scene_data.state.get_time() as f32 * 17.0).sin() * 0.05 } else { player_scale * 1.6