diff --git a/Cargo.toml b/Cargo.toml index e8824ced..6a521ab1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,9 @@ members = [ ] resolver = "2" +[workspace.lints.clippy] +needless_lifetimes = "allow" + [patch.crates-io] #wrapped2d = { git = "https://github.com/Bastacyclop/rust_box2d.git" } #xurdf = { path = "../xurdf/xurdf" } @@ -38,6 +41,10 @@ resolver = "2" #parry2d-f64 = { git = "https://github.com/dimforge/parry", branch = "master" } #parry3d-f64 = { git = "https://github.com/dimforge/parry", branch = "master" } +# See https://github.com/EmbarkStudios/puffin/pull/234 +puffin_egui = { git = "https://github.com/tedsteen/puffin.git", rev = "11771ebe00fd257aedbb545df3339ad597b1cc34" } + + # # For feature unstable-puffin-pr-235 # # See https://github.com/dimforge/rapier/issues/760. # puffin_egui = { version = "0.29", optional = true, git = "https://github.com/Vrixyz/puffin.git", branch = "expose_ui_options" } diff --git a/crates/rapier2d/Cargo.toml b/crates/rapier2d/Cargo.toml index f854cb4d..b131469a 100644 --- a/crates/rapier2d/Cargo.toml +++ b/crates/rapier2d/Cargo.toml @@ -25,6 +25,7 @@ maintenance = { status = "actively-developed" } rust.unexpected_cfgs = { level = "warn", check-cfg = [ 'cfg(feature, values("dim3", "f64"))', ] } +clippy = { needless_lifetimes = "allow" } [features] default = ["dim2", "f32"] diff --git a/crates/rapier3d/Cargo.toml b/crates/rapier3d/Cargo.toml index bc048c14..bedf1988 100644 --- a/crates/rapier3d/Cargo.toml +++ b/crates/rapier3d/Cargo.toml @@ -25,6 +25,8 @@ maintenance = { status = "actively-developed" } rust.unexpected_cfgs = { level = "warn", check-cfg = [ 'cfg(feature, values("dim2", "f64"))', ] } +clippy = { needless_lifetimes = "allow" } + [features] default = ["dim3", "f32"] diff --git a/crates/rapier_testbed2d-f64/Cargo.toml b/crates/rapier_testbed2d-f64/Cargo.toml index fab89587..2876e1dc 100644 --- a/crates/rapier_testbed2d-f64/Cargo.toml +++ b/crates/rapier_testbed2d-f64/Cargo.toml @@ -28,6 +28,7 @@ required-features = ["dim2"] rust.unexpected_cfgs = { level = "warn", check-cfg = [ 'cfg(feature, values("dim3", "f32"))', ] } +clippy = { needless_lifetimes = "allow" } [features] default = ["dim2"] @@ -42,7 +43,7 @@ unstable-puffin-pr-235 = [] features = ["parallel", "profiling"] [dependencies] -nalgebra = { version = "0.33", features = ["rand", "glam027"] } +nalgebra = { version = "0.33", features = ["rand", "glam029"] } rand = "0.8" rand_pcg = "0.3" instant = { version = "0.1", features = ["web-sys", "now"] } @@ -53,19 +54,20 @@ crossbeam = "0.8" bincode = "1" Inflector = "0.11" md5 = "0.7" -bevy_egui = "0.29" -bevy_ecs = "0.14" -bevy_core_pipeline = "0.14" -bevy_pbr = "0.14" -bevy_sprite = "0.14" +bevy_egui = "0.31" +bevy_ecs = "0.15" +bevy_core_pipeline = "0.15" +bevy_pbr = "0.15" +bevy_sprite = "0.15" profiling = "1.0" puffin_egui = { version = "0.29", optional = true } # Dependencies for native only. [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -bevy = { version = "0.14", default-features = false, features = [ +bevy = { version = "0.15", default-features = false, features = [ "bevy_asset", "bevy_winit", + "bevy_window", "x11", "tonemapping_luts", "ktx2", @@ -77,9 +79,10 @@ bevy = { version = "0.14", default-features = false, features = [ # Dependencies for WASM only. [target.'cfg(target_arch = "wasm32")'.dependencies] -bevy = { version = "0.14", default-features = false, features = [ +bevy = { version = "0.15", default-features = false, features = [ "bevy_asset", "bevy_winit", + "bevy_window", "tonemapping_luts", "ktx2", "zstd", diff --git a/crates/rapier_testbed2d/Cargo.toml b/crates/rapier_testbed2d/Cargo.toml index b95966f3..dc4b854a 100644 --- a/crates/rapier_testbed2d/Cargo.toml +++ b/crates/rapier_testbed2d/Cargo.toml @@ -28,6 +28,7 @@ required-features = ["dim2"] rust.unexpected_cfgs = { level = "warn", check-cfg = [ 'cfg(feature, values("dim3", "f64"))', ] } +clippy = { needless_lifetimes = "allow" } [features] default = ["dim2"] @@ -42,7 +43,7 @@ unstable-puffin-pr-235 = [] features = ["parallel", "other-backends", "profiling"] [dependencies] -nalgebra = { version = "0.33", features = ["rand", "glam027"] } +nalgebra = { version = "0.33", features = ["rand", "glam029"] } rand = "0.8" rand_pcg = "0.3" instant = { version = "0.1", features = ["web-sys", "now"] } @@ -53,19 +54,20 @@ crossbeam = "0.8" bincode = "1" Inflector = "0.11" md5 = "0.7" -bevy_egui = "0.29" -bevy_ecs = "0.14" -bevy_core_pipeline = "0.14" -bevy_pbr = "0.14" -bevy_sprite = "0.14" +bevy_egui = "0.31" +bevy_ecs = "0.15" +bevy_core_pipeline = "0.15" +bevy_pbr = "0.15" +bevy_sprite = "0.15" profiling = "1.0" puffin_egui = { version = "0.29", optional = true } # Dependencies for native only. [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -bevy = { version = "0.14", default-features = false, features = [ +bevy = { version = "0.15", default-features = false, features = [ "bevy_sprite", "bevy_winit", + "bevy_window", "x11", "tonemapping_luts", "ktx2", @@ -77,9 +79,10 @@ bevy = { version = "0.14", default-features = false, features = [ # Dependencies for WASM only. [target.'cfg(target_arch = "wasm32")'.dependencies] -bevy = { version = "0.14", default-features = false, features = [ +bevy = { version = "0.15", default-features = false, features = [ "bevy_sprite", "bevy_winit", + "bevy_window", "tonemapping_luts", "ktx2", "zstd", diff --git a/crates/rapier_testbed3d-f64/Cargo.toml b/crates/rapier_testbed3d-f64/Cargo.toml index 97d1a542..35d128b6 100644 --- a/crates/rapier_testbed3d-f64/Cargo.toml +++ b/crates/rapier_testbed3d-f64/Cargo.toml @@ -31,6 +31,7 @@ rust.unexpected_cfgs = { level = "warn", check-cfg = [ # but easier to just ignore it here. 'cfg(feature, values("other-backends"))', ] } +clippy = { needless_lifetimes = "allow" } [features] default = ["dim3"] @@ -44,7 +45,7 @@ unstable-puffin-pr-235 = [] features = ["parallel", "profiling"] [dependencies] -nalgebra = { version = "0.33", features = ["rand", "glam027"] } +nalgebra = { version = "0.33", features = ["rand", "glam029"] } rand = "0.8" rand_pcg = "0.3" instant = { version = "0.1", features = ["web-sys", "now"] } @@ -55,18 +56,19 @@ bincode = "1" md5 = "0.7" Inflector = "0.11" serde = { version = "1", features = ["derive"] } -bevy_egui = "0.29" -bevy_ecs = "0.14" -bevy_core_pipeline = "0.14" -bevy_pbr = "0.14" -bevy_sprite = "0.14" +bevy_egui = "0.31" +bevy_ecs = "0.15" +bevy_core_pipeline = "0.15" +bevy_pbr = "0.15" +bevy_sprite = "0.15" profiling = "1.0" puffin_egui = { version = "0.29", optional = true, git = "https://github.com/Vrixyz/puffin.git", branch = "expose_ui_options" } # Dependencies for native only. [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -bevy = { version = "0.14", default-features = false, features = [ +bevy = { version = "0.15", default-features = false, features = [ "bevy_winit", + "bevy_window", "x11", "tonemapping_luts", "ktx2", @@ -78,8 +80,10 @@ bevy = { version = "0.14", default-features = false, features = [ # Dependencies for WASM only. [target.'cfg(target_arch = "wasm32")'.dependencies] -bevy = { version = "0.14", default-features = false, features = [ +bevy = { version = "0.15", default-features = false, features = [ "bevy_winit", + "bevy_window", + "bevy_window", "tonemapping_luts", "ktx2", "zstd", diff --git a/crates/rapier_testbed3d/Cargo.toml b/crates/rapier_testbed3d/Cargo.toml index 2b536abd..ea9d218b 100644 --- a/crates/rapier_testbed3d/Cargo.toml +++ b/crates/rapier_testbed3d/Cargo.toml @@ -28,6 +28,7 @@ required-features = ["dim3"] rust.unexpected_cfgs = { level = "warn", check-cfg = [ 'cfg(feature, values("dim2", "f64"))', ] } +clippy = { needless_lifetimes = "allow" } [features] default = ["dim3"] @@ -42,7 +43,7 @@ unstable-puffin-pr-235 = [] features = ["parallel", "other-backends", "profiling"] [dependencies] -nalgebra = { version = "0.33", features = ["rand", "glam027"] } +nalgebra = { version = "0.33", features = ["rand", "glam029"] } rand = "0.8" rand_pcg = "0.3" instant = { version = "0.1", features = ["web-sys", "now"] } @@ -56,18 +57,19 @@ bincode = "1" md5 = "0.7" Inflector = "0.11" serde = { version = "1", features = ["derive"] } -bevy_egui = "0.29" -bevy_ecs = "0.14" -bevy_core_pipeline = "0.14" -bevy_pbr = "0.14" -bevy_sprite = "0.14" +bevy_egui = "0.31" +bevy_ecs = "0.15" +bevy_core_pipeline = "0.15" +bevy_pbr = "0.15" +bevy_sprite = "0.15" profiling = "1.0" puffin_egui = { version = "0.29", optional = true } # Dependencies for native only. [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -bevy = { version = "0.14", default-features = false, features = [ +bevy = { version = "0.15", default-features = false, features = [ "bevy_winit", + "bevy_window", "x11", "tonemapping_luts", "ktx2", @@ -79,7 +81,7 @@ bevy = { version = "0.14", default-features = false, features = [ # Dependencies for WASM only. [target.'cfg(target_arch = "wasm32")'.dependencies] -bevy = { version = "0.14", default-features = false, features = [ +bevy = { version = "0.15", default-features = false, features = [ "bevy_winit", "tonemapping_luts", "ktx2", diff --git a/examples2d/trimesh2.rs b/examples2d/trimesh2.rs index a295db55..a57c0fe0 100644 --- a/examples2d/trimesh2.rs +++ b/examples2d/trimesh2.rs @@ -143,7 +143,7 @@ pub struct PathConvIter<'a> { deferred: Option, } -impl<'l> Iterator for PathConvIter<'l> { +impl Iterator for PathConvIter<'_> { type Item = PathEvent; fn next(&mut self) -> Option { if self.deferred.is_some() { diff --git a/src_testbed/camera3d.rs b/src_testbed/camera3d.rs index b2313b75..c9ad2daa 100644 --- a/src_testbed/camera3d.rs +++ b/src_testbed/camera3d.rs @@ -74,8 +74,8 @@ impl OrbitCameraPlugin { } if mouse_button_input.pressed(camera.rotate_button) { - camera.x -= delta.x * camera.rotate_sensitivity * time.delta_seconds(); - camera.y -= delta.y * camera.rotate_sensitivity * time.delta_seconds(); + camera.x -= delta.x * camera.rotate_sensitivity * time.delta_secs(); + camera.y -= delta.y * camera.rotate_sensitivity * time.delta_secs(); camera.y = camera .y .max(*camera.pitch_range.start()) @@ -87,7 +87,7 @@ impl OrbitCameraPlugin { let up_dir = transform.rotation * Vec3::Y; let pan_vector = (delta.x * right_dir + delta.y * up_dir) * camera.pan_sensitivity - * time.delta_seconds(); + * time.delta_secs(); camera.center += pan_vector; } } diff --git a/src_testbed/graphics.rs b/src_testbed/graphics.rs index c09c9714..076ef292 100644 --- a/src_testbed/graphics.rs +++ b/src_testbed/graphics.rs @@ -21,6 +21,10 @@ use std::collections::HashMap; pub type BevyMaterial = bevy_sprite::ColorMaterial; #[cfg(feature = "dim3")] pub type BevyMaterial = StandardMaterial; +#[cfg(feature = "dim2")] +pub type BevyMaterialComponent = MeshMaterial2d; +#[cfg(feature = "dim3")] +pub type BevyMaterialComponent = MeshMaterial3d; pub type InstancedMaterials = HashMap, Handle>; pub const SELECTED_OBJECT_MATERIAL_KEY: Point3 = point![42, 42, 42]; diff --git a/src_testbed/objects/node.rs b/src_testbed/objects/node.rs index 5926eb7b..ad56370e 100644 --- a/src_testbed/objects/node.rs +++ b/src_testbed/objects/node.rs @@ -17,7 +17,6 @@ use rapier::math::{Isometry, Real, Vector}; use crate::graphics::{BevyMaterial, InstancedMaterials, SELECTED_OBJECT_MATERIAL_KEY}; #[cfg(feature = "dim2")] use { - bevy_sprite::MaterialMesh2dBundle, na::{Point2, Vector2}, rapier::geometry::{Ball, Cuboid}, }; @@ -46,6 +45,7 @@ impl EntityWithGraphics { let selection_material = bevy_sprite::ColorMaterial { color: Color::from(Srgba::rgb(1.0, 0.0, 0.0)), texture: None, + ..default() }; #[cfg(feature = "dim3")] let selection_material = StandardMaterial { @@ -112,6 +112,7 @@ impl EntityWithGraphics { let material = bevy_sprite::ColorMaterial { color: bevy_color, texture: None, + ..default() }; #[cfg(feature = "dim3")] let material = StandardMaterial { @@ -127,19 +128,17 @@ impl EntityWithGraphics { if let Some(mesh) = mesh { #[cfg(feature = "dim2")] - let bundle = MaterialMesh2dBundle { - mesh: mesh.into(), - material: material_handle.clone_weak(), + let bundle = ( + Mesh2d(mesh), + MeshMaterial2d(material_handle.clone_weak()), transform, - ..Default::default() - }; + ); #[cfg(feature = "dim3")] - let bundle = PbrBundle { - mesh, - material: material_handle.clone_weak(), + let bundle = ( + Mesh2d(mesh), + MeshMaterial3d(material_handle.clone_weak()), transform, - ..Default::default() - }; + ); let mut entity_commands = commands.entity(entity); entity_commands.insert(bundle); diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index fa7f731d..2ed9cb08 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -8,6 +8,7 @@ use std::num::NonZeroUsize; use bevy::prelude::*; use crate::debug_render::{DebugRenderPipelineResource, RapierDebugRenderPlugin}; +use crate::graphics::BevyMaterialComponent; use crate::physics::{DeserializedPhysicsSnapshot, PhysicsEvents, PhysicsSnapshot, PhysicsState}; use crate::plugin::TestbedPlugin; use crate::{graphics::GraphicsManager, harness::RunState}; @@ -435,7 +436,6 @@ impl TestbedApp { let mut app = App::new(); app.insert_resource(ClearColor(Color::from(Srgba::rgb(0.15, 0.15, 0.15)))) - .insert_resource(Msaa::Sample4) .insert_resource(AmbientLight { brightness: 0.3, ..Default::default() @@ -1091,36 +1091,35 @@ fn setup_graphics_environment(mut commands: Commands) { ..Default::default() }); - commands.spawn(DirectionalLightBundle { - directional_light: DirectionalLight { + commands.spawn(( + DirectionalLight { shadows_enabled: false, ..Default::default() }, - transform: Transform { + Transform { translation: Vec3::new(10.0, 2.0, 10.0), rotation: Quat::from_rotation_x(-std::f32::consts::FRAC_PI_4), ..Default::default() }, - ..Default::default() - }); - - commands - .spawn(Camera3dBundle { - transform: Transform::from_matrix( - Mat4::look_at_rh( - Vec3::new(-30.0, 30.0, 100.0), - Vec3::new(0.0, 10.0, 0.0), - Vec3::new(0.0, 1.0, 0.0), - ) - .inverse(), - ), - ..Default::default() - }) - .insert(OrbitCamera { + )); + + commands.spawn(( + Camera3d::default(), + Msaa::Sample4, + MainCamera, + Transform::from_matrix( + Mat4::look_at_rh( + Vec3::new(-30.0, 30.0, 100.0), + Vec3::new(0.0, 10.0, 0.0), + Vec3::new(0.0, 1.0, 0.0), + ) + .inverse(), + ), + OrbitCamera { rotate_sensitivity: 0.05, ..OrbitCamera::default() - }) - .insert(MainCamera); + }, + )); } #[cfg(feature = "dim2")] @@ -1139,14 +1138,14 @@ fn setup_graphics_environment(mut commands: Commands) { // ..Default::default() // }); commands - .spawn(Camera2dBundle { - transform: Transform { + .spawn(( + Camera2d, + Transform { translation: Vec3::new(0.0, 0.0, 0.0), rotation: Quat::IDENTITY, scale: Vec3::new(0.01, 0.01, 1.0), }, - ..Camera2dBundle::default() - }) + )) .insert(OrbitCamera { zoom: 100.0, pan_sensitivity: 0.02, @@ -1187,7 +1186,7 @@ fn update_testbed( (mut gfx_components, mut cameras, mut material_handles): ( Query<&mut Transform>, Query<(&Camera, &GlobalTransform, &mut OrbitCamera)>, - Query<&mut Handle>, + Query<&mut BevyMaterialComponent>, ), keys: Res>, ) { @@ -1581,7 +1580,7 @@ fn clear( #[cfg(feature = "dim2")] fn highlight_hovered_body( - _material_handles: &mut Query<&mut Handle>, + _material_handles: &mut Query<&mut BevyMaterialComponent>, _graphics_manager: &mut GraphicsManager, _testbed_state: &mut TestbedState, _physics: &PhysicsState, @@ -1594,7 +1593,7 @@ fn highlight_hovered_body( #[cfg(feature = "dim3")] fn highlight_hovered_body( - material_handles: &mut Query<&mut Handle>, + material_handles: &mut Query<&mut BevyMaterialComponent>, graphics_manager: &mut GraphicsManager, testbed_state: &mut TestbedState, physics: &PhysicsState, @@ -1606,7 +1605,7 @@ fn highlight_hovered_body( if let Some(nodes) = graphics_manager.body_nodes_mut(highlighted_body) { for node in nodes { if let Ok(mut handle) = material_handles.get_mut(node.entity) { - *handle = node.material.clone_weak() + **handle = node.material.clone_weak() }; } } @@ -1643,7 +1642,7 @@ fn highlight_hovered_body( for node in graphics_manager.body_nodes_mut(parent_handle).unwrap() { if let Ok(mut handle) = material_handles.get_mut(node.entity) { - *handle = selection_material.clone_weak(); + **handle = selection_material.clone_weak(); } } } diff --git a/src_testbed/ui.rs b/src_testbed/ui.rs index 8e543afd..390b2934 100644 --- a/src_testbed/ui.rs +++ b/src_testbed/ui.rs @@ -362,13 +362,13 @@ fn profiling_ui(ui: &mut Ui, counters: &Counters) { counters.step_time(), (1000.0 / counters.step_time()).round() )) - .id_source("total") + .id_salt("total") .show(ui, |ui| { egui::CollapsingHeader::new(format!( "Collision detection: {:.2}ms", counters.collision_detection_time() )) - .id_source("collision detection") + .id_salt("collision detection") .show(ui, |ui| { ui.label(format!("Broad-phase: {:.2}ms", counters.broad_phase_time())); ui.label(format!( @@ -377,7 +377,7 @@ fn profiling_ui(ui: &mut Ui, counters: &Counters) { )); }); egui::CollapsingHeader::new(format!("Solver: {:.2}ms", counters.solver_time())) - .id_source("solver") + .id_salt("solver") .show(ui, |ui| { ui.label(format!( "Velocity assembly: {:.2}ms", @@ -397,7 +397,7 @@ fn profiling_ui(ui: &mut Ui, counters: &Counters) { )); }); egui::CollapsingHeader::new(format!("CCD: {:.2}ms", counters.ccd_time())) - .id_source("ccd") + .id_salt("ccd") .show(ui, |ui| { ui.label(format!("# of substeps: {}", counters.ccd.num_substeps)); ui.label(format!(