diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ec064eb4b..a0b690428 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -31,7 +31,7 @@ jobs: - uses: Swatinem/rust-cache@v2 with: prefix-key: ${{ env.RUST_CACHE_KEY }} - - run: sudo apt update && sudo apt-get install pkg-config libx11-dev libasound2-dev libudev-dev + - run: sudo apt update && sudo apt-get install pkg-config libx11-dev libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev - name: Cargo doc run: cargo doc --no-deps test: @@ -46,7 +46,7 @@ jobs: - uses: Swatinem/rust-cache@v2 with: prefix-key: ${{ env.RUST_CACHE_KEY }} - - run: sudo apt update && sudo apt-get install pkg-config libx11-dev libasound2-dev libudev-dev + - run: sudo apt update && sudo apt-get install pkg-config libx11-dev libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev - run: cargo install cargo-all-features - name: Clippy for bevy_rapier2d run: cargo clippy --verbose -p bevy_rapier2d --examples diff --git a/bevy_rapier2d/Cargo.toml b/bevy_rapier2d/Cargo.toml index 702ad705e..8d3668606 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,10 +81,10 @@ bevy = { version = "0.16.0", default-features = false, features = [ ] } oorandom = "11" approx = "0.5.1" -glam = { version = "0.29", features = ["approx"] } -bevy-inspector-egui = "0.31" -bevy_egui = "0.34" -bevy_mod_debugdump = "0.13" +glam = { version = "0.30.8", features = ["approx"] } +bevy-inspector-egui = "0.34" +bevy_egui = "0.37.0" +bevy_mod_debugdump = "0.14.0" serde_json = "1.0" [package.metadata.docs.rs] diff --git a/bevy_rapier2d/examples/custom_system_setup2.rs b/bevy_rapier2d/examples/custom_system_setup2.rs index 2fefc7b46..c07d9cda8 100644 --- a/bevy_rapier2d/examples/custom_system_setup2.rs +++ b/bevy_rapier2d/examples/custom_system_setup2.rs @@ -1,4 +1,4 @@ -use bevy::{diagnostic::FrameCount, prelude::*, transform::TransformSystem}; +use bevy::{diagnostic::FrameCount, prelude::*, transform::TransformSystems}; use bevy_rapier2d::prelude::*; fn main() { @@ -24,7 +24,7 @@ fn main() { PhysicsSet::Writeback, ) .chain() - .before(TransformSystem::TransformPropagate), + .before(TransformSystems::Propagate), ); app.add_systems( diff --git a/bevy_rapier2d/examples/events2.rs b/bevy_rapier2d/examples/events2.rs index bb93c2494..95e1d42d0 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/player_movement2.rs b/bevy_rapier2d/examples/player_movement2.rs index f122310a0..1c10bc8ff 100644 --- a/bevy_rapier2d/examples/player_movement2.rs +++ b/bevy_rapier2d/examples/player_movement2.rs @@ -6,7 +6,7 @@ fn main() { .add_plugins(( DefaultPlugins.set(WindowPlugin { primary_window: Some(Window { - resolution: WindowResolution::new(1000., 1000.), + resolution: WindowResolution::new(1000, 1000), title: "Player Movement Example".to_string(), ..default() }), 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_rapier2d/examples/testbed2.rs b/bevy_rapier2d/examples/testbed2.rs index af9088b35..770ff4297 100644 --- a/bevy_rapier2d/examples/testbed2.rs +++ b/bevy_rapier2d/examples/testbed2.rs @@ -14,10 +14,11 @@ mod rope_joint2; mod voxels2; use bevy::{ + camera::visibility::RenderLayers, ecs::world::error::{EntityDespawnError, EntityMutableFetchError}, prelude::*, }; -use bevy_egui::{egui, EguiContexts, EguiPlugin}; +use bevy_egui::{egui, EguiContexts, EguiPlugin, EguiPrimaryContextPass}; use bevy_inspector_egui::quick::WorldInspectorPlugin; use bevy_rapier2d::prelude::*; @@ -67,9 +68,7 @@ fn main() { app.init_resource::() .add_plugins(( DefaultPlugins, - EguiPlugin { - enable_multipass_for_primary_context: false, - }, + EguiPlugin::default(), RapierPhysicsPlugin::::pixels_per_meter(10.0), RapierDebugRenderPlugin::default(), WorldInspectorPlugin::new(), @@ -92,6 +91,17 @@ fn main() { (Examples::PlayerMovement2, "PlayerMovement2").into(), ])) .init_resource::() + .add_systems(PreStartup, |mut commands: Commands| { + commands.spawn(( + Camera2d, + bevy_egui::PrimaryEguiContext, + Camera { + order: 999, + ..Default::default() + }, + RenderLayers::none(), + )); + }) // //boxes2 .add_systems( @@ -242,7 +252,7 @@ fn main() { ) .add_systems(OnExit(Examples::None), init) .add_systems( - Update, + EguiPrimaryContextPass, ( ui_example_system, change_example.run_if(resource_changed::), @@ -256,15 +266,19 @@ fn main() { fn init(world: &mut World) { //save all entities that are in the world before setting up any example // to be able to always return to this state when switching from one example to the other - world.resource_mut::().entities_before = - world.iter_entities().map(|e| e.id()).collect::>(); + world.resource_mut::().entities_before = world + .query::() + .iter(world) + .map(|e| e.id()) + .collect::>(); } fn cleanup(world: &mut World) { let keep_alive = world.resource::().entities_before.clone(); let remove = world - .iter_entities() + .query::() + .iter(world) .filter_map(|e| (!keep_alive.contains(&e.id())).then_some(e.id())) .collect::>(); @@ -290,7 +304,7 @@ fn ui_example_system( mut current_example: ResMut, examples_available: Res, ) { - egui::Window::new("Testbed").show(contexts.ctx_mut(), |ui| { + egui::Window::new("Testbed").show(contexts.ctx_mut().unwrap(), |ui| { let mut changed = false; egui::ComboBox::from_label("example") .width(150.0) diff --git a/bevy_rapier3d/Cargo.toml b/bevy_rapier3d/Cargo.toml index 93a16cfd2..d46edad78 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,10 +85,10 @@ bevy = { version = "0.16.0", default-features = false, features = [ "bevy_log", ] } approx = "0.5.1" -glam = { version = "0.29", features = ["approx"] } -bevy-inspector-egui = "0.31" -bevy_egui = "0.34" -bevy_mod_debugdump = "0.13" +glam = { version = "0.30.7", features = ["approx"] } +bevy-inspector-egui = "0.34" +bevy_egui = "0.37.0" +bevy_mod_debugdump = "0.14.0" [package.metadata.docs.rs] # Enable all the features when building the docs on docs.rs diff --git a/bevy_rapier3d/examples/character_controller3.rs b/bevy_rapier3d/examples/character_controller3.rs index 03c842c56..f1eed0680 100644 --- a/bevy_rapier3d/examples/character_controller3.rs +++ b/bevy_rapier3d/examples/character_controller3.rs @@ -1,5 +1,5 @@ use bevy::{ - input::{mouse::MouseMotion, InputSystem}, + input::{mouse::MouseMotion, InputSystems}, prelude::*, }; use bevy_rapier3d::{control::KinematicCharacterController, prelude::*}; @@ -25,7 +25,7 @@ fn main() { RapierDebugRenderPlugin::default(), )) .add_systems(Startup, (setup_player, setup_map)) - .add_systems(PreUpdate, handle_input.after(InputSystem)) + .add_systems(PreUpdate, handle_input.after(InputSystems)) .add_systems(Update, player_look) .add_systems(FixedUpdate, player_movement) .run(); @@ -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/custom_system_setup3.rs b/bevy_rapier3d/examples/custom_system_setup3.rs index 8d7eaba5c..ea1725c64 100644 --- a/bevy_rapier3d/examples/custom_system_setup3.rs +++ b/bevy_rapier3d/examples/custom_system_setup3.rs @@ -1,4 +1,4 @@ -use bevy::{diagnostic::FrameCount, prelude::*, transform::TransformSystem}; +use bevy::{diagnostic::FrameCount, prelude::*, transform::TransformSystems}; use bevy_rapier3d::prelude::*; fn main() { @@ -24,7 +24,7 @@ fn main() { PhysicsSet::Writeback, ) .chain() - .before(TransformSystem::TransformPropagate), + .before(TransformSystems::Propagate), ); app.add_systems( diff --git a/bevy_rapier3d/examples/despawn3.rs b/bevy_rapier3d/examples/despawn3.rs index e6eb717e5..b841e9737 100644 --- a/bevy_rapier3d/examples/despawn3.rs +++ b/bevy_rapier3d/examples/despawn3.rs @@ -95,7 +95,7 @@ pub fn despawn( mut despawn: ResMut, query: Query>, ) { - if despawn.timer.tick(time.delta()).finished() { + if despawn.timer.tick(time.delta()).is_finished() { for entity in &query { println!("Despawning ground entity"); commands.entity(entity).despawn(); 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/joints_despawn3.rs b/bevy_rapier3d/examples/joints_despawn3.rs index cb858428a..573f4a362 100644 --- a/bevy_rapier3d/examples/joints_despawn3.rs +++ b/bevy_rapier3d/examples/joints_despawn3.rs @@ -273,7 +273,7 @@ pub fn despawn( mut despawn: ResMut, query: Query>, ) { - if despawn.timer.tick(time.delta()).finished() { + if despawn.timer.tick(time.delta()).is_finished() { for entity in &query { println!("Despawning joint entity"); commands.entity(entity).despawn(); diff --git a/bevy_rapier3d/examples/picking3.rs b/bevy_rapier3d/examples/picking3.rs index 13a462e19..8c003526d 100644 --- a/bevy_rapier3d/examples/picking3.rs +++ b/bevy_rapier3d/examples/picking3.rs @@ -45,15 +45,13 @@ pub fn setup_physics(mut commands: Commands) { }, )) .observe(on_click_spawn_cube) + .observe(|out: On>, mut texts: Query<&mut TextColor>| { + let mut text_color = texts.get_mut(out.event().entity).unwrap(); + text_color.0 = Color::WHITE; + }) .observe( - |out: Trigger>, mut texts: Query<&mut TextColor>| { - let mut text_color = texts.get_mut(out.target()).unwrap(); - text_color.0 = Color::WHITE; - }, - ) - .observe( - |over: Trigger>, mut texts: Query<&mut TextColor>| { - let mut color = texts.get_mut(over.target()).unwrap(); + |over: On>, mut texts: Query<&mut TextColor>| { + let mut color = texts.get_mut(over.event().entity).unwrap(); color.0 = bevy::color::palettes::tailwind::CYAN_400.into(); }, ); @@ -67,11 +65,7 @@ pub fn setup_physics(mut commands: Commands) { )); } -fn on_click_spawn_cube( - _click: Trigger>, - mut commands: Commands, - mut num: Local, -) { +fn on_click_spawn_cube(_click: On>, mut commands: Commands, mut num: Local) { let rad = 0.25; let colors = [ Hsla::hsl(220.0, 1.0, 0.3), @@ -92,8 +86,8 @@ fn on_click_spawn_cube( *num += 1; } -fn on_drag_rotate(drag: Trigger>, mut transforms: Query<&mut Transform>) { - if let Ok(mut transform) = transforms.get_mut(drag.target()) { +fn on_drag_rotate(drag: On>, mut transforms: Query<&mut Transform>) { + if let Ok(mut transform) = transforms.get_mut(drag.event().entity) { transform.rotate_y(drag.delta.x * 0.02); transform.rotate_x(drag.delta.y * 0.02); } 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_rapier3d/examples/static_trimesh3.rs b/bevy_rapier3d/examples/static_trimesh3.rs index 5bc41382a..fdff1780c 100644 --- a/bevy_rapier3d/examples/static_trimesh3.rs +++ b/bevy_rapier3d/examples/static_trimesh3.rs @@ -123,7 +123,7 @@ pub fn ball_spawner(mut commands: Commands, time: Res