From 2155a27ae61257b0757c817aa6de1d7b8179e32b Mon Sep 17 00:00:00 2001 From: Thierry Berger Date: Fri, 14 Jun 2024 11:30:38 +0200 Subject: [PATCH 1/4] fix: resolved clippy warnings (#527) --- src/dynamics/generic_joint.rs | 4 ++-- src/plugin/systems/mod.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dynamics/generic_joint.rs b/src/dynamics/generic_joint.rs index 98ea073d..833dbc72 100644 --- a/src/dynamics/generic_joint.rs +++ b/src/dynamics/generic_joint.rs @@ -241,7 +241,7 @@ macro_rules! joint_conversion_methods( if self.locked_axes() == $axes { // SAFETY: this is OK because the target joint type is // a `repr(transparent)` newtype of `Joint`. - Some(unsafe { std::mem::transmute(self) }) + Some(unsafe { std::mem::transmute::<&Self, &$Joint>(self) }) } else { None } @@ -253,7 +253,7 @@ macro_rules! joint_conversion_methods( if self.locked_axes() == $axes { // SAFETY: this is OK because the target joint type is // a `repr(transparent)` newtype of `Joint`. - Some(unsafe { std::mem::transmute(self) }) + Some(unsafe { std::mem::transmute::<&mut Self, &mut $Joint>(self) }) } else { None } diff --git a/src/plugin/systems/mod.rs b/src/plugin/systems/mod.rs index ca4358ec..c7393f67 100644 --- a/src/plugin/systems/mod.rs +++ b/src/plugin/systems/mod.rs @@ -312,7 +312,7 @@ mod tests { app.add_plugins(( WindowPlugin::default(), AssetPlugin::default(), - ScenePlugin::default(), + ScenePlugin, RenderPlugin { render_creation: RenderCreation::Automatic(WgpuSettings { backends: None, From 470cd9bb5f3605b74d313b6d1ded1db7b212841a Mon Sep 17 00:00:00 2001 From: Miguel Medina Ballesteros Date: Fri, 14 Jun 2024 11:33:20 +0200 Subject: [PATCH 2/4] fix: capitalization typo on doc (#526) --- src/plugin/context.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugin/context.rs b/src/plugin/context.rs index e842a411..3c53c6c7 100644 --- a/src/plugin/context.rs +++ b/src/plugin/context.rs @@ -748,7 +748,7 @@ impl RapierContext { /// * `shape_vel` - The constant velocity of the shape to cast (i.e. the cast direction). /// * `shape` - The shape to cast. /// * `max_toi` - The maximum time-of-impact that can be reported by this cast. This effectively - /// limits the distance traveled by the shape to `shapeVel.norm() * maxToi`. + /// limits the distance traveled by the shape to `shape_vel.norm() * maxToi`. /// * `stop_at_penetration` - If the casted shape starts in a penetration state with any /// collider, two results are possible. If `stop_at_penetration` is `true` then, the /// result will have a `toi` equal to `start_time`. If `stop_at_penetration` is `false` From 5fb8a4e1eba588cd44a779911703d1f84dc3f1ad Mon Sep 17 00:00:00 2001 From: Thierry Berger Date: Fri, 14 Jun 2024 11:34:21 +0200 Subject: [PATCH 3/4] Update to Rapier 0.20 (#525) --- CHANGELOG.md | 5 +++++ Cargo.toml | 2 +- bevy_rapier2d/Cargo.toml | 18 +++++++++++++--- bevy_rapier3d/Cargo.toml | 23 +++++++++++++++++---- src/dynamics/prismatic_joint.rs | 16 +++++++-------- src/dynamics/rope_joint.rs | 14 ++++++------- src/dynamics/spring_joint.rs | 6 +++--- src/plugin/context.rs | 24 ++++++++++------------ src/plugin/systems/character_controller.rs | 22 +++++++++----------- 9 files changed, 79 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c2fe847..3813a5ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,14 @@ ## Unreleased +**This is an update to Rapier 0.20 which includes several stability improvements +and new features. Please have a look at the +[0.20 changelog](https://github.com/dimforge/rapier/blob/master/CHANGELOG.md) of Rapier.** + ### Modified - Renamed `has_any_active_contacts` to `has_any_active_contact` for better consistency with rapier. +- Update to rapier `0.20`. ### Added diff --git a/Cargo.toml b/Cargo.toml index f752cf60..69f7b7de 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,4 +20,4 @@ codegen-units = 1 #parry2d = { git = "https://github.com/dimforge/parry", branch = "master" } #parry3d = { git = "https://github.com/dimforge/parry", branch = "master" } #rapier2d = { git = "https://github.com/dimforge/rapier", branch = "character-controller" } -#rapier3d = { git = "https://github.com/dimforge/rapier", branch = "character-controller" } \ No newline at end of file +#rapier3d = { git = "https://github.com/dimforge/rapier", branch = "character-controller" } diff --git a/bevy_rapier2d/Cargo.toml b/bevy_rapier2d/Cargo.toml index 8c1b435e..e576dc41 100644 --- a/bevy_rapier2d/Cargo.toml +++ b/bevy_rapier2d/Cargo.toml @@ -20,8 +20,20 @@ required-features = ["dim2"] [features] default = ["dim2", "async-collider", "debug-render-2d"] dim2 = [] -debug-render-2d = ["bevy/bevy_core_pipeline", "bevy/bevy_sprite", "bevy/bevy_gizmos", "rapier2d/debug-render", "bevy/bevy_asset"] -debug-render-3d = ["bevy/bevy_core_pipeline", "bevy/bevy_pbr", "bevy/bevy_gizmos", "rapier2d/debug-render", "bevy/bevy_asset"] +debug-render-2d = [ + "bevy/bevy_core_pipeline", + "bevy/bevy_sprite", + "bevy/bevy_gizmos", + "rapier2d/debug-render", + "bevy/bevy_asset", +] +debug-render-3d = [ + "bevy/bevy_core_pipeline", + "bevy/bevy_pbr", + "bevy/bevy_gizmos", + "rapier2d/debug-render", + "bevy/bevy_asset", +] parallel = ["rapier2d/parallel"] simd-stable = ["rapier2d/simd-stable"] simd-nightly = ["rapier2d/simd-nightly"] @@ -34,7 +46,7 @@ async-collider = ["bevy/bevy_asset", "bevy/bevy_scene"] [dependencies] bevy = { version = "0.13", default-features = false } nalgebra = { version = "0.32.3", features = ["convert-glam025"] } -rapier2d = "0.19.0" +rapier2d = "0.20" bitflags = "2.4" log = "0.4" serde = { version = "1", features = ["derive"], optional = true } diff --git a/bevy_rapier3d/Cargo.toml b/bevy_rapier3d/Cargo.toml index 60073514..d519f049 100644 --- a/bevy_rapier3d/Cargo.toml +++ b/bevy_rapier3d/Cargo.toml @@ -21,8 +21,20 @@ required-features = ["dim3"] default = ["dim3", "async-collider", "debug-render-3d"] dim3 = [] debug-render = ["debug-render-3d"] -debug-render-2d = ["bevy/bevy_core_pipeline", "bevy/bevy_sprite", "bevy/bevy_gizmos", "rapier3d/debug-render", "bevy/bevy_asset"] -debug-render-3d = ["bevy/bevy_core_pipeline", "bevy/bevy_pbr", "bevy/bevy_gizmos", "rapier3d/debug-render", "bevy/bevy_asset"] +debug-render-2d = [ + "bevy/bevy_core_pipeline", + "bevy/bevy_sprite", + "bevy/bevy_gizmos", + "rapier3d/debug-render", + "bevy/bevy_asset", +] +debug-render-3d = [ + "bevy/bevy_core_pipeline", + "bevy/bevy_pbr", + "bevy/bevy_gizmos", + "rapier3d/debug-render", + "bevy/bevy_asset", +] parallel = ["rapier3d/parallel"] simd-stable = ["rapier3d/simd-stable"] simd-nightly = ["rapier3d/simd-nightly"] @@ -35,13 +47,16 @@ async-collider = ["bevy/bevy_asset", "bevy/bevy_scene"] [dependencies] bevy = { version = "0.13", default-features = false } nalgebra = { version = "0.32.3", features = ["convert-glam025"] } -rapier3d = "0.19" +rapier3d = "0.20" bitflags = "2.4" log = "0.4" serde = { version = "1", features = ["derive"], optional = true } [dev-dependencies] -bevy = { version = "0.13", default-features = false, features = ["x11", "tonemapping_luts"] } +bevy = { version = "0.13", default-features = false, features = [ + "x11", + "tonemapping_luts", +] } approx = "0.5.1" glam = { version = "0.25", features = ["approx"] } diff --git a/src/dynamics/prismatic_joint.rs b/src/dynamics/prismatic_joint.rs index 5d3f35e4..fdbc4f0f 100644 --- a/src/dynamics/prismatic_joint.rs +++ b/src/dynamics/prismatic_joint.rs @@ -89,19 +89,19 @@ impl PrismaticJoint { /// The motor affecting the joint’s translational degree of freedom. #[must_use] pub fn motor(&self) -> Option<&JointMotor> { - self.data.motor(JointAxis::X) + self.data.motor(JointAxis::LinX) } /// Set the spring-like model used by the motor to reach the desired target velocity and position. pub fn set_motor_model(&mut self, model: MotorModel) -> &mut Self { - self.data.set_motor_model(JointAxis::X, model); + self.data.set_motor_model(JointAxis::LinX, model); self } /// Sets the target velocity this motor needs to reach. pub fn set_motor_velocity(&mut self, target_vel: Real, factor: Real) -> &mut Self { self.data - .set_motor_velocity(JointAxis::X, target_vel, factor); + .set_motor_velocity(JointAxis::LinX, target_vel, factor); self } @@ -113,7 +113,7 @@ impl PrismaticJoint { damping: Real, ) -> &mut Self { self.data - .set_motor_position(JointAxis::X, target_pos, stiffness, damping); + .set_motor_position(JointAxis::LinX, target_pos, stiffness, damping); self } @@ -126,25 +126,25 @@ impl PrismaticJoint { damping: Real, ) -> &mut Self { self.data - .set_motor(JointAxis::X, target_pos, target_vel, stiffness, damping); + .set_motor(JointAxis::LinX, target_pos, target_vel, stiffness, damping); self } /// Sets the maximum force the motor can deliver. pub fn set_motor_max_force(&mut self, max_force: Real) -> &mut Self { - self.data.set_motor_max_force(JointAxis::X, max_force); + self.data.set_motor_max_force(JointAxis::LinX, max_force); self } /// The limit distance attached bodies can translate along the joint’s principal axis. #[must_use] pub fn limits(&self) -> Option<&JointLimits> { - self.data.limits(JointAxis::X) + self.data.limits(JointAxis::LinX) } /// Sets the `[min,max]` limit distances attached bodies can translate along the joint’s principal axis. pub fn set_limits(&mut self, limits: [Real; 2]) -> &mut Self { - self.data.set_limits(JointAxis::X, limits); + self.data.set_limits(JointAxis::LinX, limits); self } } diff --git a/src/dynamics/rope_joint.rs b/src/dynamics/rope_joint.rs index 4369d8b1..d0fbb15d 100644 --- a/src/dynamics/rope_joint.rs +++ b/src/dynamics/rope_joint.rs @@ -93,14 +93,14 @@ impl RopeJoint { /// Set the spring-like model used by the motor to reach the desired target velocity and position. pub fn set_motor_model(&mut self, model: MotorModel) -> &mut Self { - self.data.set_motor_model(JointAxis::X, model); + self.data.set_motor_model(JointAxis::LinX, model); self } /// Sets the target velocity this motor needs to reach. pub fn set_motor_velocity(&mut self, target_vel: Real, factor: Real) -> &mut Self { self.data - .set_motor_velocity(JointAxis::X, target_vel, factor); + .set_motor_velocity(JointAxis::LinX, target_vel, factor); self } @@ -112,7 +112,7 @@ impl RopeJoint { damping: Real, ) -> &mut Self { self.data - .set_motor_position(JointAxis::X, target_pos, stiffness, damping); + .set_motor_position(JointAxis::LinX, target_pos, stiffness, damping); self } @@ -125,13 +125,13 @@ impl RopeJoint { damping: Real, ) -> &mut Self { self.data - .set_motor(JointAxis::X, target_pos, target_vel, stiffness, damping); + .set_motor(JointAxis::LinX, target_pos, target_vel, stiffness, damping); self } /// Sets the maximum force the motor can deliver. pub fn set_motor_max_force(&mut self, max_force: Real) -> &mut Self { - self.data.set_motor_max_force(JointAxis::X, max_force); + self.data.set_motor_max_force(JointAxis::LinX, max_force); self } @@ -145,14 +145,14 @@ impl RopeJoint { /// /// The `max_dist` must be strictly greater than 0.0. pub fn set_max_distance(&mut self, max_dist: Real) -> &mut Self { - self.data.set_limits(JointAxis::X, [0.0, max_dist]); + self.data.set_limits(JointAxis::LinX, [0.0, max_dist]); self } /// The maximum distance between the attached bodies. pub fn max_distance(&self) -> Real { self.data - .limits(JointAxis::X) + .limits(JointAxis::LinX) .map(|l| l.max) .unwrap_or(Real::MAX) } diff --git a/src/dynamics/spring_joint.rs b/src/dynamics/spring_joint.rs index 5c7f9943..c4ac9b8d 100644 --- a/src/dynamics/spring_joint.rs +++ b/src/dynamics/spring_joint.rs @@ -22,8 +22,8 @@ impl SpringJoint { pub fn new(rest_length: Real, stiffness: Real, damping: Real) -> Self { let data = GenericJointBuilder::new(JointAxesMask::empty()) .coupled_axes(JointAxesMask::LIN_AXES) - .motor_position(JointAxis::X, rest_length, stiffness, damping) - .motor_model(JointAxis::X, MotorModel::ForceBased) + .motor_position(JointAxis::LinX, rest_length, stiffness, damping) + .motor_model(JointAxis::LinX, MotorModel::ForceBased) .build(); Self { data } } @@ -75,7 +75,7 @@ impl SpringJoint { /// `MotorModel::AccelerationBased`, the spring constants will be automatically scaled by the attached masses, /// making the spring more mass-independent. pub fn set_spring_model(&mut self, model: MotorModel) -> &mut Self { - self.data.set_motor_model(JointAxis::X, model); + self.data.set_motor_model(JointAxis::LinX, model); self } } diff --git a/src/plugin/context.rs b/src/plugin/context.rs index 3c53c6c7..4d39149b 100644 --- a/src/plugin/context.rs +++ b/src/plugin/context.rs @@ -338,7 +338,7 @@ impl RapierContext { /// Updates the state of the query pipeline, based on the collider positions known /// from the last timestep or the last call to `self.propagate_modified_body_positions_to_colliders()`. pub fn update_query_pipeline(&mut self) { - self.query_pipeline.update(&self.bodies, &self.colliders); + self.query_pipeline.update(&self.colliders); } /// The map from entities to rigid-body handles. @@ -447,18 +447,16 @@ impl RapierContext { ); if options.apply_impulse_to_dynamic_bodies { - for collision in &*collisions { - controller.solve_character_collision_impulses( - dt, - bodies, - colliders, - query_pipeline, - (&scaled_shape).into(), - shape_mass, - collision, - filter, - ) - } + controller.solve_character_collision_impulses( + dt, + bodies, + colliders, + query_pipeline, + (&scaled_shape).into(), + shape_mass, + collisions.iter().copied(), + filter, + ) } result diff --git a/src/plugin/systems/character_controller.rs b/src/plugin/systems/character_controller.rs index 4b25f6be..57e05da0 100644 --- a/src/plugin/systems/character_controller.rs +++ b/src/plugin/systems/character_controller.rs @@ -115,18 +115,16 @@ pub fn update_character_controls( ); if controller.apply_impulse_to_dynamic_bodies { - for collision in &*collisions { - raw_controller.solve_character_collision_impulses( - context.integration_parameters.dt, - &mut context.bodies, - &context.colliders, - &context.query_pipeline, - character_shape, - character_mass, - collision, - filter, - ) - } + raw_controller.solve_character_collision_impulses( + context.integration_parameters.dt, + &mut context.bodies, + &context.colliders, + &context.query_pipeline, + character_shape, + character_mass, + collisions.iter().copied(), + filter, + ) } if let Ok(mut transform) = transforms.get_mut(entity_to_move) { From f99a40fea0f71df92f37f36580f973c3689febf5 Mon Sep 17 00:00:00 2001 From: Thierry Berger Date: Fri, 14 Jun 2024 14:12:40 +0200 Subject: [PATCH 4/4] update dependency to bevy 0.14 (#523) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Crozet --- CHANGELOG.md | 4 ++- bevy_rapier2d/Cargo.toml | 11 ++++--- bevy_rapier2d/examples/boxes2.rs | 2 +- bevy_rapier2d/examples/contact_filter2.rs | 4 +-- .../examples/custom_system_setup2.rs | 2 +- bevy_rapier2d/examples/debug_despawn2.rs | 6 ++-- bevy_rapier2d/examples/despawn2.rs | 2 +- bevy_rapier2d/examples/events2.rs | 2 +- bevy_rapier2d/examples/joints2.rs | 2 +- bevy_rapier2d/examples/joints_despawn2.rs | 2 +- bevy_rapier2d/examples/locked_rotations2.rs | 2 +- bevy_rapier2d/examples/multiple_colliders2.rs | 2 +- bevy_rapier2d/examples/player_movement2.rs | 2 +- bevy_rapier2d/examples/rope_joint2.rs | 2 +- bevy_rapier3d/Cargo.toml | 9 +++--- bevy_rapier3d/examples/boxes3.rs | 8 ++--- bevy_rapier3d/examples/contact_filter3.rs | 4 +-- .../examples/custom_system_setup3.rs | 8 ++--- bevy_rapier3d/examples/despawn3.rs | 8 ++--- bevy_rapier3d/examples/events3.rs | 2 +- bevy_rapier3d/examples/joints3.rs | 2 +- bevy_rapier3d/examples/joints_despawn3.rs | 2 +- bevy_rapier3d/examples/locked_rotations3.rs | 2 +- bevy_rapier3d/examples/multiple_colliders3.rs | 8 ++--- bevy_rapier3d/examples/ray_casting3.rs | 5 +-- bevy_rapier3d/examples/static_trimesh3.rs | 2 +- src/plugin/plugin.rs | 23 ++++--------- src/plugin/systems/collider.rs | 25 ++++++++------- src/plugin/systems/mod.rs | 32 +++++++++---------- src/render/mod.rs | 4 +-- 30 files changed, 94 insertions(+), 95 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3813a5ae..a0964762 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,10 @@ and new features. Please have a look at the ### Modified -- Renamed `has_any_active_contacts` to `has_any_active_contact` for better consistency with rapier. - Update to rapier `0.20`. +- Update to bevy `0.14`. +- Renamed `has_any_active_contacts` to `has_any_active_contact` for better consistency with rapier. +- `ColliderDebugColor`'s property is now a `bevy::color::Hsla`. ### Added diff --git a/bevy_rapier2d/Cargo.toml b/bevy_rapier2d/Cargo.toml index e576dc41..38f0d699 100644 --- a/bevy_rapier2d/Cargo.toml +++ b/bevy_rapier2d/Cargo.toml @@ -44,18 +44,21 @@ headless = [] async-collider = ["bevy/bevy_asset", "bevy/bevy_scene"] [dependencies] -bevy = { version = "0.13", default-features = false } -nalgebra = { version = "0.32.3", features = ["convert-glam025"] } +bevy = { version = "0.14.0-rc.2", default-features = false } +nalgebra = { version = "0.32.6", features = ["convert-glam027"] } rapier2d = "0.20" bitflags = "2.4" log = "0.4" serde = { version = "1", features = ["derive"], optional = true } [dev-dependencies] -bevy = { version = "0.13", default-features = false, features = ["x11"] } +bevy = { version = "0.14.0-rc.2", default-features = false, features = [ + "x11", + "bevy_state", +] } oorandom = "11" approx = "0.5.1" -glam = { version = "0.25", features = ["approx"] } +glam = { version = "0.27", features = ["approx"] } [package.metadata.docs.rs] # Enable all the features when building the docs on docs.rs diff --git a/bevy_rapier2d/examples/boxes2.rs b/bevy_rapier2d/examples/boxes2.rs index 6de77dd0..a653575e 100644 --- a/bevy_rapier2d/examples/boxes2.rs +++ b/bevy_rapier2d/examples/boxes2.rs @@ -3,7 +3,7 @@ use bevy_rapier2d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier2d/examples/contact_filter2.rs b/bevy_rapier2d/examples/contact_filter2.rs index ac4f6410..d286151d 100644 --- a/bevy_rapier2d/examples/contact_filter2.rs +++ b/bevy_rapier2d/examples/contact_filter2.rs @@ -30,7 +30,7 @@ impl BevyPhysicsHooks for SameUserDataFilter<'_, '_> { fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, @@ -80,7 +80,7 @@ pub fn setup_physics(mut commands: Commands) { let centery = shift / 2.0; let mut group_id = 0; let tags = [CustomFilterTag::GroupA, CustomFilterTag::GroupB]; - let colors = [Color::hsl(220.0, 1.0, 0.3), Color::hsl(260.0, 1.0, 0.7)]; + let colors = [Hsla::hsl(220.0, 1.0, 0.3), Hsla::hsl(260.0, 1.0, 0.7)]; for i in 0..num { for j in 0usize..num * 5 { diff --git a/bevy_rapier2d/examples/custom_system_setup2.rs b/bevy_rapier2d/examples/custom_system_setup2.rs index 8ee9d8eb..31232e9f 100644 --- a/bevy_rapier2d/examples/custom_system_setup2.rs +++ b/bevy_rapier2d/examples/custom_system_setup2.rs @@ -4,7 +4,7 @@ use bevy_rapier2d::prelude::*; fn main() { let mut app = App::new(); - app.insert_resource(ClearColor(Color::rgb( + app.insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier2d/examples/debug_despawn2.rs b/bevy_rapier2d/examples/debug_despawn2.rs index 9bfcf6ac..8fc57af6 100644 --- a/bevy_rapier2d/examples/debug_despawn2.rs +++ b/bevy_rapier2d/examples/debug_despawn2.rs @@ -8,7 +8,7 @@ use bevy_rapier2d::prelude::*; fn main() { App::new() .init_resource::() - .insert_resource(ClearColor(Color::rgb(0.0, 0.0, 0.0))) + .insert_resource(ClearColor(Color::srgb(0.0, 0.0, 0.0))) .add_plugins(( DefaultPlugins, RapierPhysicsPlugin::::pixels_per_meter(100.0), @@ -76,7 +76,7 @@ impl Default for Game { } fn byte_rgb(r: u8, g: u8, b: u8) -> Color { - Color::rgb(r as f32 / 255.0, g as f32 / 255.0, b as f32 / 255.0) + Color::srgb(r as f32 / 255.0, g as f32 / 255.0, b as f32 / 255.0) } pub fn setup_game(mut commands: Commands, mut game: ResMut) { @@ -133,7 +133,7 @@ fn setup_board(commands: &mut Commands, game: &Game) { commands.spawn(( SpriteBundle { sprite: Sprite { - color: Color::rgb(0.5, 0.5, 0.5), + color: Color::srgb(0.5, 0.5, 0.5), custom_size: Some(Vec2::new(game.n_lanes as f32 * 30.0, 60.0)), ..Default::default() }, diff --git a/bevy_rapier2d/examples/despawn2.rs b/bevy_rapier2d/examples/despawn2.rs index e90af714..a2b5288d 100644 --- a/bevy_rapier2d/examples/despawn2.rs +++ b/bevy_rapier2d/examples/despawn2.rs @@ -18,7 +18,7 @@ pub struct ResizeResource { fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier2d/examples/events2.rs b/bevy_rapier2d/examples/events2.rs index ed8d8fc4..d772d3f8 100644 --- a/bevy_rapier2d/examples/events2.rs +++ b/bevy_rapier2d/examples/events2.rs @@ -3,7 +3,7 @@ use bevy_rapier2d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier2d/examples/joints2.rs b/bevy_rapier2d/examples/joints2.rs index d3b0c9eb..e30352ca 100644 --- a/bevy_rapier2d/examples/joints2.rs +++ b/bevy_rapier2d/examples/joints2.rs @@ -3,7 +3,7 @@ use bevy_rapier2d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier2d/examples/joints_despawn2.rs b/bevy_rapier2d/examples/joints_despawn2.rs index f4c4130e..736d868b 100644 --- a/bevy_rapier2d/examples/joints_despawn2.rs +++ b/bevy_rapier2d/examples/joints_despawn2.rs @@ -11,7 +11,7 @@ pub struct DespawnResource { fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier2d/examples/locked_rotations2.rs b/bevy_rapier2d/examples/locked_rotations2.rs index 15afe5b1..2046bb8f 100644 --- a/bevy_rapier2d/examples/locked_rotations2.rs +++ b/bevy_rapier2d/examples/locked_rotations2.rs @@ -3,7 +3,7 @@ use bevy_rapier2d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier2d/examples/multiple_colliders2.rs b/bevy_rapier2d/examples/multiple_colliders2.rs index 3100d014..a2cb1f85 100644 --- a/bevy_rapier2d/examples/multiple_colliders2.rs +++ b/bevy_rapier2d/examples/multiple_colliders2.rs @@ -3,7 +3,7 @@ use bevy_rapier2d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier2d/examples/player_movement2.rs b/bevy_rapier2d/examples/player_movement2.rs index 99e01f0e..1a4c0910 100644 --- a/bevy_rapier2d/examples/player_movement2.rs +++ b/bevy_rapier2d/examples/player_movement2.rs @@ -35,7 +35,7 @@ pub fn spawn_player(mut commands: Commands, mut rapier_config: ResMut { fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, @@ -81,7 +81,7 @@ pub fn setup_physics(mut commands: Commands) { let centery = shift / 2.0; let mut group_id = 0; let tags = [CustomFilterTag::GroupA, CustomFilterTag::GroupB]; - let colors = [Color::hsl(220.0, 1.0, 0.3), Color::hsl(260.0, 1.0, 0.7)]; + let colors = [Hsla::hsl(220.0, 1.0, 0.3), Hsla::hsl(260.0, 1.0, 0.7)]; for i in 0..num { for j in 0usize..num * 5 { diff --git a/bevy_rapier3d/examples/custom_system_setup3.rs b/bevy_rapier3d/examples/custom_system_setup3.rs index 073cd95f..77b14b45 100644 --- a/bevy_rapier3d/examples/custom_system_setup3.rs +++ b/bevy_rapier3d/examples/custom_system_setup3.rs @@ -4,7 +4,7 @@ use bevy_rapier3d::prelude::*; fn main() { let mut app = App::new(); - app.insert_resource(ClearColor(Color::rgb( + app.insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, @@ -94,9 +94,9 @@ pub fn setup_physics(mut commands: Commands) { let mut offset = -(num as f32) * (rad * 2.0 + rad) * 0.5; let mut color = 0; let colors = [ - Color::hsl(220.0, 1.0, 0.3), - Color::hsl(180.0, 1.0, 0.3), - Color::hsl(260.0, 1.0, 0.7), + Hsla::hsl(220.0, 1.0, 0.3), + Hsla::hsl(180.0, 1.0, 0.3), + Hsla::hsl(260.0, 1.0, 0.7), ]; for j in 0usize..20 { diff --git a/bevy_rapier3d/examples/despawn3.rs b/bevy_rapier3d/examples/despawn3.rs index 60feaaf7..cf747c95 100644 --- a/bevy_rapier3d/examples/despawn3.rs +++ b/bevy_rapier3d/examples/despawn3.rs @@ -11,7 +11,7 @@ pub struct DespawnResource { fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, @@ -64,9 +64,9 @@ pub fn setup_physics(mut commands: Commands) { let mut offset = -(num as f32) * (rad * 2.0 + rad) * 0.5; let mut color = 0; let colors = [ - Color::hsl(220.0, 1.0, 0.3), - Color::hsl(180.0, 1.0, 0.3), - Color::hsl(260.0, 1.0, 0.7), + Hsla::hsl(220.0, 1.0, 0.3), + Hsla::hsl(180.0, 1.0, 0.3), + Hsla::hsl(260.0, 1.0, 0.7), ]; for j in 0usize..20 { diff --git a/bevy_rapier3d/examples/events3.rs b/bevy_rapier3d/examples/events3.rs index 41033f55..3f8791d7 100644 --- a/bevy_rapier3d/examples/events3.rs +++ b/bevy_rapier3d/examples/events3.rs @@ -3,7 +3,7 @@ use bevy_rapier3d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier3d/examples/joints3.rs b/bevy_rapier3d/examples/joints3.rs index 877e714a..52f35e96 100644 --- a/bevy_rapier3d/examples/joints3.rs +++ b/bevy_rapier3d/examples/joints3.rs @@ -3,7 +3,7 @@ use bevy_rapier3d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier3d/examples/joints_despawn3.rs b/bevy_rapier3d/examples/joints_despawn3.rs index 9db9e391..17d1608f 100644 --- a/bevy_rapier3d/examples/joints_despawn3.rs +++ b/bevy_rapier3d/examples/joints_despawn3.rs @@ -11,7 +11,7 @@ pub struct DespawnResource { fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier3d/examples/locked_rotations3.rs b/bevy_rapier3d/examples/locked_rotations3.rs index 34acf8b6..0288db5f 100644 --- a/bevy_rapier3d/examples/locked_rotations3.rs +++ b/bevy_rapier3d/examples/locked_rotations3.rs @@ -3,7 +3,7 @@ use bevy_rapier3d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/bevy_rapier3d/examples/multiple_colliders3.rs b/bevy_rapier3d/examples/multiple_colliders3.rs index 214b7082..50451796 100644 --- a/bevy_rapier3d/examples/multiple_colliders3.rs +++ b/bevy_rapier3d/examples/multiple_colliders3.rs @@ -3,7 +3,7 @@ use bevy_rapier3d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, @@ -51,9 +51,9 @@ pub fn setup_physics(mut commands: Commands) { let mut offset = -(num as f32) * (rad * 2.0 + rad) * 0.5; let mut color = 0; let colors = [ - Color::hsl(220.0, 1.0, 0.3), - Color::hsl(180.0, 1.0, 0.3), - Color::hsl(260.0, 1.0, 0.7), + Hsla::hsl(220.0, 1.0, 0.3), + Hsla::hsl(180.0, 1.0, 0.3), + Hsla::hsl(260.0, 1.0, 0.7), ]; for j in 0usize..20 { diff --git a/bevy_rapier3d/examples/ray_casting3.rs b/bevy_rapier3d/examples/ray_casting3.rs index 4599a722..0840fe7d 100644 --- a/bevy_rapier3d/examples/ray_casting3.rs +++ b/bevy_rapier3d/examples/ray_casting3.rs @@ -1,10 +1,11 @@ +use bevy::color::palettes::basic; use bevy::prelude::*; use bevy::window::PrimaryWindow; use bevy_rapier3d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, @@ -104,7 +105,7 @@ pub fn cast_ray( // Color in blue the entity we just hit. // Because of the query filter, only colliders attached to a dynamic body // will get an event. - let color = Color::BLUE; + let color = basic::BLUE.into(); commands.entity(entity).insert(ColliderDebugColor(color)); } } diff --git a/bevy_rapier3d/examples/static_trimesh3.rs b/bevy_rapier3d/examples/static_trimesh3.rs index 4fe085cb..4b01ea08 100644 --- a/bevy_rapier3d/examples/static_trimesh3.rs +++ b/bevy_rapier3d/examples/static_trimesh3.rs @@ -5,7 +5,7 @@ use bevy_rapier3d::prelude::*; fn main() { App::new() - .insert_resource(ClearColor(Color::rgb( + .insert_resource(ClearColor(Color::srgb( 0xF9 as f32 / 255.0, 0xF9 as f32 / 255.0, 0xFF as f32 / 255.0, diff --git a/src/plugin/plugin.rs b/src/plugin/plugin.rs index 8bdc358f..7864f558 100644 --- a/src/plugin/plugin.rs +++ b/src/plugin/plugin.rs @@ -2,13 +2,10 @@ use crate::pipeline::{CollisionEvent, ContactForceEvent}; use crate::plugin::configuration::SimulationToRenderTime; use crate::plugin::{systems, RapierConfiguration, RapierContext}; use crate::prelude::*; -use bevy::{ - ecs::{ - event::{event_update_system, Events}, - schedule::{ScheduleLabel, SystemConfigs}, - system::SystemParamItem, - }, - utils::intern::Interned, +use bevy::ecs::{ + intern::Interned, + schedule::{ScheduleLabel, SystemConfigs}, + system::SystemParamItem, }; use bevy::{prelude::*, transform::TransformSystem}; use rapier::dynamics::IntegrationParameters; @@ -109,19 +106,11 @@ where ) .chain() .into_configs(), - PhysicsSet::StepSimulation => ( - systems::step_simulation::, - event_update_system:: - .before(systems::step_simulation::), - event_update_system:: - .before(systems::step_simulation::), - ) - .into_configs(), + PhysicsSet::StepSimulation => (systems::step_simulation::).into_configs(), PhysicsSet::Writeback => ( systems::update_colliding_entities, systems::writeback_rigid_bodies, systems::writeback_mass_properties, - event_update_system::.after(systems::writeback_mass_properties), ) .into_configs(), } @@ -241,7 +230,7 @@ where // Warn user if the timestep mode isn't in Fixed if self.schedule.as_dyn_eq().dyn_eq(FixedUpdate.as_dyn_eq()) { - let config = app.world.resource::(); + let config = app.world_mut().resource::(); match config.timestep_mode { TimestepMode::Fixed { .. } => {} mode => { diff --git a/src/plugin/systems/collider.rs b/src/plugin/systems/collider.rs index d546cba7..f58a78b0 100644 --- a/src/plugin/systems/collider.rs +++ b/src/plugin/systems/collider.rs @@ -492,14 +492,14 @@ pub mod test { app.add_plugins(HeadlessRenderPlugin) .add_systems(Update, init_async_colliders); - let mut meshes = app.world.resource_mut::>(); + let mut meshes = app.world_mut().resource_mut::>(); let cube = meshes.add(Cuboid::default()); - let entity = app.world.spawn((cube, AsyncCollider::default())).id(); + let entity = app.world_mut().spawn((cube, AsyncCollider::default())).id(); app.update(); - let entity = app.world.entity(entity); + let entity = app.world().entity(entity); assert!( entity.get::().is_some(), "Collider component should be added" @@ -520,19 +520,22 @@ pub mod test { app.add_plugins(HeadlessRenderPlugin) .add_systems(PostUpdate, init_async_scene_colliders); - let mut meshes = app.world.resource_mut::>(); + let mut meshes = app.world_mut().resource_mut::>(); let cube_handle = meshes.add(Cuboid::default()); let capsule_handle = meshes.add(Capsule3d::default()); - let cube = app.world.spawn((Name::new("Cube"), cube_handle)).id(); - let capsule = app.world.spawn((Name::new("Capsule"), capsule_handle)).id(); + let cube = app.world_mut().spawn((Name::new("Cube"), cube_handle)).id(); + let capsule = app + .world_mut() + .spawn((Name::new("Capsule"), capsule_handle)) + .id(); - let mut scenes = app.world.resource_mut::>(); + let mut scenes = app.world_mut().resource_mut::>(); let scene = scenes.add(Scene::new(World::new())); let mut named_shapes = bevy::utils::HashMap::new(); named_shapes.insert("Capsule".to_string(), None); let parent = app - .world + .world_mut() .spawn(( scene, AsyncSceneCollider { @@ -546,15 +549,15 @@ pub mod test { app.update(); assert!( - app.world.entity(cube).get::().is_some(), + app.world().entity(cube).get::().is_some(), "Collider component should be added for cube" ); assert!( - app.world.entity(capsule).get::().is_none(), + app.world().entity(capsule).get::().is_none(), "Collider component shouldn't be added for capsule" ); assert!( - app.world.entity(parent).get::().is_none(), + app.world().entity(parent).get::().is_none(), "AsyncSceneCollider component should be removed after Collider components creation" ); } diff --git a/src/plugin/systems/mod.rs b/src/plugin/systems/mod.rs index c7393f67..c513856c 100644 --- a/src/plugin/systems/mod.rs +++ b/src/plugin/systems/mod.rs @@ -89,11 +89,11 @@ mod tests { app.add_event::() .add_systems(Update, update_colliding_entities); - let entity1 = app.world.spawn(CollidingEntities::default()).id(); - let entity2 = app.world.spawn(CollidingEntities::default()).id(); + let entity1 = app.world_mut().spawn(CollidingEntities::default()).id(); + let entity2 = app.world_mut().spawn(CollidingEntities::default()).id(); let mut collision_events = app - .world + .world_mut() .get_resource_mut::>() .unwrap(); collision_events.send(CollisionEvent::Started( @@ -105,7 +105,7 @@ mod tests { app.update(); let colliding_entities1 = app - .world + .world() .entity(entity1) .get::() .unwrap(); @@ -121,7 +121,7 @@ mod tests { ); let colliding_entities2 = app - .world + .world() .entity(entity2) .get::() .unwrap(); @@ -137,7 +137,7 @@ mod tests { ); let mut collision_events = app - .world + .world_mut() .get_resource_mut::>() .unwrap(); collision_events.send(CollisionEvent::Stopped( @@ -149,7 +149,7 @@ mod tests { app.update(); let colliding_entities1 = app - .world + .world() .entity(entity1) .get::() .unwrap(); @@ -159,7 +159,7 @@ mod tests { ); let colliding_entities2 = app - .world + .world() .entity(entity2) .get::() .unwrap(); @@ -198,7 +198,7 @@ mod tests { for (child_transform, parent_transform) in [zero, same, different] { let child = app - .world + .world_mut() .spawn(( TransformBundle::from(child_transform), RigidBody::Fixed, @@ -206,14 +206,14 @@ mod tests { )) .id(); - app.world + app.world_mut() .spawn(TransformBundle::from(parent_transform)) .push_children(&[child]); app.update(); - let child_transform = app.world.entity(child).get::().unwrap(); - let context = app.world.resource::(); + let child_transform = app.world().entity(child).get::().unwrap(); + let context = app.world().resource::(); let child_handle = context.entity2body[&child]; let child_body = context.bodies.get(child_handle).unwrap(); let body_transform = utils::iso_to_transform(child_body.position()); @@ -257,12 +257,12 @@ mod tests { for (child_transform, parent_transform) in [zero, same, different] { let child = app - .world + .world_mut() .spawn((TransformBundle::from(child_transform), Collider::ball(1.0))) .id(); let parent = app - .world + .world_mut() .spawn((TransformBundle::from(parent_transform), RigidBody::Fixed)) .push_children(&[child]) .id(); @@ -270,12 +270,12 @@ mod tests { app.update(); let child_transform = app - .world + .world() .entity(child) .get::() .unwrap() .compute_transform(); - let context = app.world.resource::(); + let context = app.world().resource::(); let parent_handle = context.entity2body[&parent]; let parent_body = context.bodies.get(parent_handle).unwrap(); let child_collider_handle = parent_body.colliders()[0]; diff --git a/src/render/mod.rs b/src/render/mod.rs index a1f4c7a2..b99e0c70 100644 --- a/src/render/mod.rs +++ b/src/render/mod.rs @@ -12,7 +12,7 @@ use std::fmt::Debug; /// force to a specific value the color used to render the /// collider. #[derive(Copy, Clone, Component, PartialEq, Debug)] -pub struct ColliderDebugColor(pub Color); +pub struct ColliderDebugColor(pub Hsla); /// Plugin rensponsible for rendering (using lines) what Rapier "sees" when performing /// its physics simulation. This is typically useful to check proper @@ -112,7 +112,7 @@ impl<'world, 'state, 'a, 'b> BevyLinesRenderBackend<'world, 'state, 'a, 'b> { _ => None, }; - color.map(|co| co.as_hsla_f32()).unwrap_or(default) + color.map(|co: Hsla| co.to_f32_array()).unwrap_or(default) } }