diff --git a/src/lib.rs b/src/lib.rs index 60c547e..4415e96 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -61,7 +61,10 @@ impl Plugin for AsteroidPlugin { ) .add_systems( FixedPostUpdate, - (physics::integrate_velocity, physics::apply_rotation_to_mesh) + ( + physics::integrate_velocity, + physics::integrate_angular_velocity, + ) .run_if(in_state(GameState::Playing)), ) .add_event::() diff --git a/src/physics.rs b/src/physics.rs index 503ce87..d41fd75 100644 --- a/src/physics.rs +++ b/src/physics.rs @@ -26,12 +26,15 @@ pub(crate) fn integrate_velocity(mut query: Query<(&mut Transform, &Velocity)>, } } -/* - Assigns the rotation to the transform by copying it from the Rotation component. -*/ -pub(crate) fn apply_rotation_to_mesh(mut query: Query<(&mut Transform, &Rotation)>) { - for (mut transform, rotation) in &mut query { - transform.rotation = Quat::from_rotation_z(rotation.0); +/// Integrate angular velocity and update the entity's transform. +pub(crate) fn integrate_angular_velocity( + mut objects: Query<(&mut Transform, &AngularVelocity)>, + time: Res