From cf8740338638035917ef6e3408494beacb08218f Mon Sep 17 00:00:00 2001 From: Lukas Friman Date: Fri, 3 Oct 2025 18:20:58 +0200 Subject: [PATCH 1/8] Updates glam to 0.30, bevy to 0.17, nalgebra to 0.34 and rapier to 0.29. --- bevy_rapier2d/Cargo.toml | 10 +- bevy_rapier2d/examples/events2.rs | 4 +- bevy_rapier2d/examples/serialization2.rs | 2 +- bevy_rapier3d/Cargo.toml | 10 +- .../examples/character_controller3.rs | 2 +- bevy_rapier3d/examples/events3.rs | 4 +- .../examples/rapier_context_component.rs | 2 +- bevy_rapier_benches3d/Cargo.toml | 4 +- ci/Cargo.toml | 2 +- src/dynamics/rigid_body.rs | 2 +- src/geometry/collider_impl.rs | 2 +- src/geometry/to_bevy_mesh.rs | 31 ++--- src/picking_backend/mod.rs | 17 ++- src/pipeline/events.rs | 7 +- src/plugin/context/mod.rs | 12 +- .../rapier_context_systemparam.rs | 4 +- src/plugin/narrow_phase.rs | 2 +- src/plugin/plugin.rs | 19 +-- src/plugin/systems/collider.rs | 4 +- src/plugin/systems/mod.rs | 8 +- src/plugin/systems/remove.rs | 8 +- src/plugin/systems/rigid_body.rs | 4 +- src/plugin/systems/writeback.rs | 2 +- src/reflect/mod.rs | 129 +++++++++++++++++- src/render/mod.rs | 4 +- 25 files changed, 207 insertions(+), 88 deletions(-) diff --git a/bevy_rapier2d/Cargo.toml b/bevy_rapier2d/Cargo.toml index 702ad705e..fd4cf6ddb 100644 --- a/bevy_rapier2d/Cargo.toml +++ b/bevy_rapier2d/Cargo.toml @@ -64,15 +64,15 @@ async-collider = [ to-bevy-mesh = ["bevy/bevy_render", "bevy/bevy_asset"] [dependencies] -bevy = { version = "0.16.0", default-features = false, features = ["std"] } -nalgebra = { version = "0.33", features = ["convert-glam029"] } -rapier2d = "0.27.0-beta.0" +bevy = { version = "0.17.0", default-features = false, features = ["std"] } +nalgebra = { version = "0.34.1", features = ["convert-glam030"] } +rapier2d = "0.29.0" bitflags = "2.4" log = "0.4" serde = { version = "1", features = ["derive"], optional = true } [dev-dependencies] -bevy = { version = "0.16.0", default-features = false, features = [ +bevy = { version = "0.17.0", default-features = false, features = [ "x11", "bevy_state", "bevy_window", @@ -81,7 +81,7 @@ bevy = { version = "0.16.0", default-features = false, features = [ ] } oorandom = "11" approx = "0.5.1" -glam = { version = "0.29", features = ["approx"] } +glam = { version = "0.30.8", features = ["approx"] } bevy-inspector-egui = "0.31" bevy_egui = "0.34" bevy_mod_debugdump = "0.13" diff --git a/bevy_rapier2d/examples/events2.rs b/bevy_rapier2d/examples/events2.rs index bb93c2494..195e06bfd 100644 --- a/bevy_rapier2d/examples/events2.rs +++ b/bevy_rapier2d/examples/events2.rs @@ -23,8 +23,8 @@ pub fn setup_graphics(mut commands: Commands) { } pub fn display_events( - mut collision_events: EventReader, - mut contact_force_events: EventReader, + mut collision_events: MessageReader, + mut contact_force_events: MessageReader, ) { for collision_event in collision_events.read() { println!("Received collision event: {collision_event:?}"); diff --git a/bevy_rapier2d/examples/serialization2.rs b/bevy_rapier2d/examples/serialization2.rs index 73accb7cc..47997b357 100644 --- a/bevy_rapier2d/examples/serialization2.rs +++ b/bevy_rapier2d/examples/serialization2.rs @@ -35,6 +35,6 @@ pub fn print_physics(_context: ReadRapierContext) { panic!("Example 'serialization' should be run with '--features serde-serialize'."); } -fn quit(mut exit_event: EventWriter) { +fn quit(mut exit_event: MessageWriter) { exit_event.write(AppExit::Success); } diff --git a/bevy_rapier3d/Cargo.toml b/bevy_rapier3d/Cargo.toml index 93a16cfd2..fd7b7a94c 100644 --- a/bevy_rapier3d/Cargo.toml +++ b/bevy_rapier3d/Cargo.toml @@ -65,15 +65,15 @@ async-collider = [ to-bevy-mesh = ["bevy/bevy_render", "bevy/bevy_asset"] [dependencies] -bevy = { version = "0.16.0", default-features = false, features = ["std"] } -nalgebra = { version = "0.33", features = ["convert-glam029"] } -rapier3d = "0.27.0-beta.0" +bevy = { version = "0.17.0", default-features = false, features = ["std"] } +nalgebra = { version = "0.34.1", features = ["convert-glam030"] } +rapier3d = "0.29.0" bitflags = "2.4" log = "0.4" serde = { version = "1", features = ["derive"], optional = true } [dev-dependencies] -bevy = { version = "0.16.0", default-features = false, features = [ +bevy = { version = "0.17.0", default-features = false, features = [ "bevy_window", "x11", "tonemapping_luts", @@ -85,7 +85,7 @@ bevy = { version = "0.16.0", default-features = false, features = [ "bevy_log", ] } approx = "0.5.1" -glam = { version = "0.29", features = ["approx"] } +glam = { version = "0.30.7", features = ["approx"] } bevy-inspector-egui = "0.31" bevy_egui = "0.34" bevy_mod_debugdump = "0.13" diff --git a/bevy_rapier3d/examples/character_controller3.rs b/bevy_rapier3d/examples/character_controller3.rs index 03c842c56..3d81b6bdb 100644 --- a/bevy_rapier3d/examples/character_controller3.rs +++ b/bevy_rapier3d/examples/character_controller3.rs @@ -112,7 +112,7 @@ fn handle_input( keyboard: Res>, mut movement: ResMut, mut look: ResMut, - mut mouse_events: EventReader, + mut mouse_events: MessageReader, ) { if keyboard.pressed(KeyCode::KeyW) { movement.z -= 1.0; diff --git a/bevy_rapier3d/examples/events3.rs b/bevy_rapier3d/examples/events3.rs index 9f1a23e84..bd56214d2 100644 --- a/bevy_rapier3d/examples/events3.rs +++ b/bevy_rapier3d/examples/events3.rs @@ -26,8 +26,8 @@ pub fn setup_graphics(mut commands: Commands) { } pub fn display_events( - mut collision_events: EventReader, - mut contact_force_events: EventReader, + mut collision_events: MessageReader, + mut contact_force_events: MessageReader, ) { for collision_event in collision_events.read() { println!("Received collision event: {collision_event:?}"); diff --git a/bevy_rapier3d/examples/rapier_context_component.rs b/bevy_rapier3d/examples/rapier_context_component.rs index 3f4056f0a..452632167 100644 --- a/bevy_rapier3d/examples/rapier_context_component.rs +++ b/bevy_rapier3d/examples/rapier_context_component.rs @@ -19,7 +19,7 @@ fn main() { /// Demonstrates how to access a more specific component of [`RapierContext`] fn display_nb_colliders( query_context: Query<&RapierContextColliders, With>, - mut exit: EventWriter, + mut exit: MessageWriter, ) -> Result<()> { let nb_colliders = query_context.single()?.colliders.len(); println!("There are {nb_colliders} colliders."); diff --git a/bevy_rapier_benches3d/Cargo.toml b/bevy_rapier_benches3d/Cargo.toml index b2d3c997e..5a2db2abf 100644 --- a/bevy_rapier_benches3d/Cargo.toml +++ b/bevy_rapier_benches3d/Cargo.toml @@ -9,9 +9,9 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -rapier3d = { features = ["profiler"], version = "0.27.0-beta.0" } +rapier3d = { features = ["profiler"], version = "0.29.0" } bevy_rapier3d = { version = "0.31", path = "../bevy_rapier3d" } -bevy = { version = "0.16.0", default-features = false } +bevy = { version = "0.17.0", default-features = false } [dev-dependencies] divan = "0.1" diff --git a/ci/Cargo.toml b/ci/Cargo.toml index 520fa95aa..ee7d070fa 100644 --- a/ci/Cargo.toml +++ b/ci/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -bevy = "0.16.0" +bevy = "0.17.0" bevy_rapier3d = { version = "0.31", path = "../bevy_rapier3d" } bevy_rapier2d = { version = "0.31", path = "../bevy_rapier2d" } diff --git a/src/dynamics/rigid_body.rs b/src/dynamics/rigid_body.rs index eefd0f3ef..61a2cbb5e 100644 --- a/src/dynamics/rigid_body.rs +++ b/src/dynamics/rigid_body.rs @@ -202,7 +202,7 @@ impl std::ops::Deref for ReadMassProperties { } /// Entity that likely had their mass properties changed this frame. -#[derive(Deref, Copy, Clone, Debug, PartialEq, Event)] +#[derive(Deref, Copy, Clone, Debug, PartialEq, Event, Message)] pub struct MassModifiedEvent(pub Entity); impl From for MassModifiedEvent { diff --git a/src/geometry/collider_impl.rs b/src/geometry/collider_impl.rs index 7055194b3..c3ef018ad 100644 --- a/src/geometry/collider_impl.rs +++ b/src/geometry/collider_impl.rs @@ -2,8 +2,8 @@ use na::DVector; #[cfg(all(feature = "dim3", feature = "async-collider"))] use { + bevy::mesh::{Indices, VertexAttributeValues}, bevy::prelude::*, - bevy::render::mesh::{Indices, VertexAttributeValues}, }; use rapier::{ diff --git a/src/geometry/to_bevy_mesh.rs b/src/geometry/to_bevy_mesh.rs index a5ac8815f..e90089530 100644 --- a/src/geometry/to_bevy_mesh.rs +++ b/src/geometry/to_bevy_mesh.rs @@ -5,15 +5,15 @@ use crate::rapier::prelude::Ball; #[cfg(feature = "dim3")] use crate::rapier::prelude::{Cone, Cylinder}; #[cfg(feature = "dim2")] -use bevy::render::mesh::{Capsule2dMeshBuilder, CircleMeshBuilder}; +use bevy::mesh::{Capsule2dMeshBuilder, CircleMeshBuilder}; #[cfg(feature = "dim3")] -use bevy::render::mesh::{ +use bevy::mesh::{ Capsule3dMeshBuilder, ConeMeshBuilder, CylinderMeshBuilder, PlaneMeshBuilder, SphereMeshBuilder, }; use bevy::{ asset::RenderAssetUsages, + mesh::Indices, prelude::{Mesh, MeshBuilder}, - render::mesh::Indices, }; use rapier::prelude::{Capsule, TypedShape}; @@ -65,7 +65,7 @@ pub fn typed_shape_to_mesh(typed_shape: &TypedShape) -> Option { let (vtx, idx) = _voxels.to_outline(); let mesh = Mesh::new( - bevy::render::mesh::PrimitiveTopology::TriangleList, + bevy::mesh::PrimitiveTopology::TriangleList, RenderAssetUsages::default(), ) .with_inserted_indices(Indices::U32(idx.into_iter().flatten().collect())); @@ -94,7 +94,7 @@ pub fn typed_shape_to_mesh(typed_shape: &TypedShape) -> Option { let vertices: Vec<_> = vertices.iter().map(|pos| [pos.x, pos.y, pos.z]).collect(); let indices = tri_mesh.indices(); let mesh = Mesh::new( - bevy::render::mesh::PrimitiveTopology::TriangleList, + bevy::mesh::PrimitiveTopology::TriangleList, RenderAssetUsages::default(), ) .with_inserted_indices(Indices::U32(indices.iter().cloned().flatten().collect())); @@ -126,7 +126,7 @@ pub fn typed_shape_to_mesh(typed_shape: &TypedShape) -> Option { let (vtx, idx) = _height_field.to_trimesh(); let mesh = Mesh::new( - bevy::render::mesh::PrimitiveTopology::TriangleList, + bevy::mesh::PrimitiveTopology::TriangleList, RenderAssetUsages::default(), ) .with_inserted_indices(Indices::U32(idx.into_iter().flatten().collect())); @@ -164,7 +164,7 @@ pub fn typed_shape_to_mesh(typed_shape: &TypedShape) -> Option { .flat_map(|i| vec![0, i, i + 1]) .collect::>(); let mesh = Mesh::new( - bevy::render::mesh::PrimitiveTopology::TriangleList, + bevy::mesh::PrimitiveTopology::TriangleList, RenderAssetUsages::default(), ) .with_inserted_indices(Indices::U32(indices)); @@ -179,7 +179,7 @@ pub fn typed_shape_to_mesh(typed_shape: &TypedShape) -> Option { .flat_map(|i| vec![0, i, i + 1]) .collect::>(); let mesh = Mesh::new( - bevy::render::mesh::PrimitiveTopology::TriangleList, + bevy::mesh::PrimitiveTopology::TriangleList, RenderAssetUsages::default(), ) .with_inserted_indices(Indices::U32(indices)); @@ -243,7 +243,7 @@ impl TryFrom<&Collider> for Mesh { /// Trait to convert a parry shape to a [`MeshBuilder`]. pub trait ToMeshBuilder { /// Specific [`MeshBuilder`] being returned. - type MeshBuilder: bevy::render::prelude::MeshBuilder; + type MeshBuilder: bevy::mesh::prelude::MeshBuilder; /// Returns a dedicated [`MeshBuilder`]. fn mesh_builder(&self) -> Self::MeshBuilder; } @@ -262,10 +262,7 @@ impl ToMeshBuilder for &Ball { type MeshBuilder = SphereMeshBuilder; fn mesh_builder(&self) -> Self::MeshBuilder { - SphereMeshBuilder::new( - self.radius, - bevy::render::mesh::SphereKind::Ico { subdivisions: 1 }, - ) + SphereMeshBuilder::new(self.radius, bevy::mesh::SphereKind::Ico { subdivisions: 1 }) } } @@ -286,7 +283,7 @@ impl ToMeshBuilder for &Capsule { type MeshBuilder = Capsule2dMeshBuilder; fn mesh_builder(&self) -> Self::MeshBuilder { - bevy::render::mesh::Capsule2dMeshBuilder::new(self.radius, self.height(), 10) + bevy::mesh::Capsule2dMeshBuilder::new(self.radius, self.height(), 10) } } @@ -295,7 +292,7 @@ impl ToMeshBuilder for &Capsule { type MeshBuilder = Capsule3dMeshBuilder; fn mesh_builder(&self) -> Self::MeshBuilder { - bevy::render::mesh::Capsule3dMeshBuilder::new(self.radius, self.height(), 10, 10) + bevy::mesh::Capsule3dMeshBuilder::new(self.radius, self.height(), 10, 10) } } #[cfg(feature = "dim3")] @@ -303,7 +300,7 @@ impl ToMeshBuilder for &Cone { type MeshBuilder = ConeMeshBuilder; fn mesh_builder(&self) -> Self::MeshBuilder { - bevy::render::mesh::ConeMeshBuilder::new(self.radius, self.half_height * 2.0, 16) + bevy::mesh::ConeMeshBuilder::new(self.radius, self.half_height * 2.0, 16) } } @@ -312,6 +309,6 @@ impl ToMeshBuilder for &Cylinder { type MeshBuilder = CylinderMeshBuilder; fn mesh_builder(&self) -> Self::MeshBuilder { - bevy::render::mesh::CylinderMeshBuilder::new(self.radius, self.half_height * 2.0, 16) + bevy::mesh::CylinderMeshBuilder::new(self.radius, self.half_height * 2.0, 16) } } diff --git a/src/picking_backend/mod.rs b/src/picking_backend/mod.rs index 0b251077e..0dc06333f 100644 --- a/src/picking_backend/mod.rs +++ b/src/picking_backend/mod.rs @@ -7,14 +7,13 @@ //! to `true` and add a [`RapierPickable`] component to the desired camera and target entities. use bevy::app::prelude::*; +use bevy::camera::visibility::RenderLayers; +use bevy::camera::Camera; use bevy::ecs::prelude::*; -use bevy::picking::{ - backend::{ray::RayMap, HitData, PointerHits}, - PickSet, -}; -use bevy::prelude::PickingPlugin; +use bevy::picking::backend::{ray::RayMap, HitData, PointerHits}; +use bevy::picking::{PickingPlugin, PickingSystems}; +use bevy::prelude::{InheritedVisibility, ViewVisibility}; use bevy::reflect::prelude::*; -use bevy::render::{prelude::*, view::RenderLayers}; use rapier::parry::query::DefaultQueryDispatcher; /// How a ray cast should handle [`Visibility`]. @@ -67,9 +66,9 @@ impl Plugin for RapierPickingPlugin { fn build(&self, app: &mut App) { app.register_type::<(RapierPickable, RapierPickingSettings)>() .init_resource::() - .add_systems(PreUpdate, update_hits.in_set(PickSet::Backend)); + .add_systems(PreUpdate, update_hits.in_set(PickingSystems::Backend)); if !app.is_plugin_added::() { - app.add_plugins(PickingPlugin::default()); + app.add_plugins(PickingPlugin); } } } @@ -88,7 +87,7 @@ pub fn update_hits( &crate::prelude::RapierRigidBodySet, &crate::prelude::RapierContextSimulation, )>, - mut output: EventWriter, + mut output: MessageWriter, ) { for (&ray_id, &ray) in ray_map.map.iter() { let Ok((camera, cam_pickable, cam_layers)) = picking_cameras.get(ray_id.camera) else { diff --git a/src/pipeline/events.rs b/src/pipeline/events.rs index 1eae4dcaa..8b5e0edbf 100644 --- a/src/pipeline/events.rs +++ b/src/pipeline/events.rs @@ -1,4 +1,5 @@ use crate::math::{Real, Vect}; +use bevy::ecs::message::Message; use bevy::prelude::{Entity, Event}; use rapier::dynamics::RigidBodySet; use rapier::geometry::{ @@ -16,7 +17,7 @@ use crate::prelude::{ActiveEvents, ContactForceEventThreshold}; /// /// This will only get triggered if the entity has the /// [`ActiveEvents::COLLISION_EVENTS`] flag enabled. -#[derive(Event, Copy, Clone, Debug, PartialEq, Eq)] +#[derive(Event, Copy, Clone, Debug, PartialEq, Eq, Message)] pub enum CollisionEvent { /// Event occurring when two colliders start colliding Started(Entity, Entity, CollisionEventFlags), @@ -29,7 +30,7 @@ pub enum CollisionEvent { /// /// This will only get triggered if the entity has the /// [`ActiveEvents::CONTACT_FORCE_EVENTS`] flag enabled. -#[derive(Event, Copy, Clone, Debug, PartialEq)] +#[derive(Event, Copy, Clone, Debug, PartialEq, Message)] pub struct ContactForceEvent { /// The first collider involved in the contact. pub collider1: Entity, @@ -162,7 +163,7 @@ mod test { } } pub fn save_events( - mut events: EventReader, + mut events: MessageReader, mut saver: ResMut>, ) { for event in events.read() { diff --git a/src/plugin/context/mod.rs b/src/plugin/context/mod.rs index 7bc86b181..aadd35e18 100644 --- a/src/plugin/context/mod.rs +++ b/src/plugin/context/mod.rs @@ -17,7 +17,7 @@ use rapier::prelude::{ use crate::geometry::{PointProjection, RayIntersection, ShapeCastHit}; use crate::math::{Rot, Vect}; use crate::pipeline::{CollisionEvent, ContactForceEvent, EventQueue}; -use bevy::prelude::{Entity, EventWriter, GlobalTransform, Query}; +use bevy::prelude::{Entity, GlobalTransform, Query}; use crate::control::{CharacterCollision, MoveShapeOptions, MoveShapeOutput}; use crate::dynamics::TransformInterpolation; @@ -223,7 +223,7 @@ impl<'a> RapierQueryPipelineMut<'a> { } /// Downgrades the mutable reference to an immutable reference. - pub fn as_ref(&self) -> RapierQueryPipeline { + pub fn as_ref(&self) -> RapierQueryPipeline<'_> { RapierQueryPipeline { query_pipeline: self.query_pipeline.as_ref(), } @@ -700,8 +700,8 @@ impl RapierContextSimulation { gravity: Vect, timestep_mode: TimestepMode, events: Option<( - &EventWriter, - &EventWriter, + &MessageWriter, + &MessageWriter, )>, hooks: &dyn PhysicsHooks, time: &Time, @@ -848,8 +848,8 @@ impl RapierContextSimulation { /// that are stored in the events list pub fn send_bevy_events( &mut self, - collision_event_writer: &mut EventWriter, - contact_force_event_writer: &mut EventWriter, + collision_event_writer: &mut MessageWriter, + contact_force_event_writer: &mut MessageWriter, ) { for collision_event in self.collision_events_to_send.drain(..) { collision_event_writer.write(collision_event); diff --git a/src/plugin/context/systemparams/rapier_context_systemparam.rs b/src/plugin/context/systemparams/rapier_context_systemparam.rs index eebb2639b..f9e8a4d3f 100644 --- a/src/plugin/context/systemparams/rapier_context_systemparam.rs +++ b/src/plugin/context/systemparams/rapier_context_systemparam.rs @@ -195,8 +195,8 @@ mod simulation { gravity: Vect, timestep_mode: TimestepMode, events: Option<( - &EventWriter, - &EventWriter, + &MessageWriter, + &MessageWriter, )>, hooks: &dyn PhysicsHooks, time: &Time, diff --git a/src/plugin/narrow_phase.rs b/src/plugin/narrow_phase.rs index b1f5d3a5a..aad854eb4 100644 --- a/src/plugin/narrow_phase.rs +++ b/src/plugin/narrow_phase.rs @@ -333,7 +333,7 @@ impl SolverContactView<'_> { } /// Whether or not this contact existed during the last timestep. pub fn is_new(&self) -> bool { - self.raw.is_new + self.raw.is_new == 1.0 } } diff --git a/src/plugin/plugin.rs b/src/plugin/plugin.rs index 8877e3242..389a785a0 100644 --- a/src/plugin/plugin.rs +++ b/src/plugin/plugin.rs @@ -1,13 +1,14 @@ use crate::pipeline::{CollisionEvent, ContactForceEvent}; use crate::prelude::*; use crate::reflect::IntegrationParametersWrapper; +use bevy::app::DynEq; use bevy::ecs::{ intern::Interned, schedule::{IntoScheduleConfigs, ScheduleConfigs, ScheduleLabel}, system::{ScheduleSystem, SystemParamItem}, }; use bevy::platform::collections::HashSet; -use bevy::{prelude::*, transform::TransformSystem}; +use bevy::{prelude::*, transform::TransformSystems}; use rapier::dynamics::IntegrationParameters; use std::marker::PhantomData; @@ -193,7 +194,7 @@ pub struct RapierBevyComponentApply; /// A set for rapier's copy of Bevy's transform propagation systems. /// -/// See [`TransformSystem`](bevy::transform::TransformSystem::TransformPropagate). +/// See [`TransformSystems`](bevy::transform::TransformSystems::Propagate). #[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)] pub struct RapierTransformPropagateSet; @@ -267,9 +268,9 @@ where .register_type::() .register_type::(); - app.insert_resource(Events::::default()) - .insert_resource(Events::::default()) - .insert_resource(Events::::default()); + app.insert_resource(Messages::::default()) + .insert_resource(Messages::::default()) + .insert_resource(Messages::::default()); let default_world_init = app.world().get_resource::(); if let Some(world_init) = default_world_init { log::warn!("RapierPhysicsPlugin added but a `RapierContextInitialization` resource was already existing.\ @@ -290,7 +291,7 @@ where if self.schedule != PostUpdate.intern() { app.add_systems( PostUpdate, - (systems::sync_removals,).before(TransformSystem::TransformPropagate), + (systems::sync_removals,).before(TransformSystems::Propagate), ); } @@ -304,7 +305,7 @@ where PhysicsSet::Writeback, ) .chain() - .before(TransformSystem::TransformPropagate), + .before(TransformSystems::Propagate), ); app.configure_sets( self.schedule, @@ -326,7 +327,7 @@ where app.init_resource::(); // Warn user if the timestep mode isn't in Fixed - if self.schedule.as_dyn_eq().dyn_eq(FixedUpdate.as_dyn_eq()) { + if self.schedule.dyn_eq(&FixedUpdate as &dyn DynEq) { let config = app.world_mut().resource::(); match config { TimestepMode::Fixed { .. } => {} @@ -341,7 +342,7 @@ where fn finish(&self, _app: &mut App) { #[cfg(all(feature = "dim3", feature = "async-collider"))] { - use bevy::{asset::AssetPlugin, render::mesh::MeshPlugin, scene::ScenePlugin}; + use bevy::{asset::AssetPlugin, mesh::MeshPlugin, scene::ScenePlugin}; if !_app.is_plugin_added::() { _app.add_plugins(AssetPlugin::default()); } diff --git a/src/plugin/systems/collider.rs b/src/plugin/systems/collider.rs index 2eaa5499b..295171dd7 100644 --- a/src/plugin/systems/collider.rs +++ b/src/plugin/systems/collider.rs @@ -141,7 +141,7 @@ pub fn apply_collider_user_changes( Changed, >, - mut mass_modified: EventWriter, + mut mass_modified: MessageWriter, ) { for (rapier_entity, handle, transform) in changed_collider_transforms.iter() { let (rigidbody_set, mut context_colliders) = context @@ -568,7 +568,7 @@ pub fn init_async_scene_colliders( /// Adds entity to [`CollidingEntities`] on starting collision and removes from it when the /// collision ends. pub fn update_colliding_entities( - mut collision_events: EventReader, + mut collision_events: MessageReader, mut colliding_entities: Query<&mut CollidingEntities>, ) { for event in collision_events.read() { diff --git a/src/plugin/systems/mod.rs b/src/plugin/systems/mod.rs index fe5fd0279..5cf2f2e0d 100644 --- a/src/plugin/systems/mod.rs +++ b/src/plugin/systems/mod.rs @@ -42,8 +42,8 @@ pub fn step_simulation( timestep_mode: Res, hooks: StaticSystemParam, time: Res