diff --git a/src/navigation.rs b/src/navigation.rs index ea099a9..6620c8e 100644 --- a/src/navigation.rs +++ b/src/navigation.rs @@ -97,7 +97,7 @@ fn movement_controls( if actions.pressed(NavigationAction::Move) { if let Some(pair) = actions.clamped_axis_pair(NavigationAction::Move) { cleanup = true; - let mut direction = pair.xy(); + let direction = pair.xy(); let strength = direction.length(); let forward_backward_movement_factor = if direction.x > 0. { config.forward_movement_factor @@ -271,6 +271,14 @@ fn add_speed(mut commands: Commands, query: Query, Without } } +fn limit_speed(mut query: Query<(&mut Speed, &MaxSpeed)>) { + for (mut speed, max_speed) in &mut query { + if **speed > **max_speed { + **speed = **max_speed; + } + } +} + fn remove_speed(removed: RemovedComponents, mut query: Query<&mut Velocity>) { for entity in removed.iter() { if let Ok(mut velocity) = query.get_mut(entity) { @@ -379,6 +387,7 @@ where .add_system(tick_snap_timers) .add_system(speak_direction.chain(error_handler)) .add_system(add_speed) + .add_system(limit_speed) .add_system_to_stage(CoreStage::PostUpdate, remove_speed) .add_system_to_stage(CoreStage::PostUpdate, log_area_descriptions::); const MOVEMENT_CONTROLS: &str = "MOVEMENT_CONTROLS";