From 60ad00276efe5ca3bbdf47d6fef015ac94b0cd88 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Wed, 18 Aug 2021 14:35:58 -0500 Subject: [PATCH] Zero out velocity when `Speed` component is removed. --- src/navigation.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/navigation.rs b/src/navigation.rs index 0ff6d99..d8d94db 100644 --- a/src/navigation.rs +++ b/src/navigation.rs @@ -202,6 +202,14 @@ fn speak_direction( Ok(()) } +fn remove_speed(removed: RemovedComponents, mut query: Query<&mut RigidBodyVelocity>) { + for entity in removed.iter() { + if let Ok(mut velocity) = query.get_mut(entity) { + velocity.linvel = Vec2::ZERO.into(); + } + } +} + #[derive(Clone, Debug)] pub struct NavigationConfig { pub action_backward: Option, @@ -264,7 +272,8 @@ where .register_type::() .register_type::() .add_system(update_direction.system()) - .add_system(speak_direction.system().chain(error_handler.system())); + .add_system(speak_direction.system().chain(error_handler.system())) + .add_system_to_stage(CoreStage::PostUpdate, remove_speed.system()); if config.movement_control_states.is_empty() { app.add_system(movement_controls::.system()); } else {