From 97fe15fb5850e4f68efa8d35354471d23dea05ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Lescaudey=20de=20Maneville?= Date: Tue, 20 Feb 2024 10:34:18 +0100 Subject: [PATCH] Bevy 0.13 (#15) --- Cargo.toml | 17 ++++++++++++++--- examples/2d_cloth_cutter.rs | 2 +- examples/3d_cloth.rs | 6 +++--- examples/3d_line.rs | 12 ++++++------ src/systems/sticks.rs | 22 ++++++++++++---------- 5 files changed, 36 insertions(+), 23 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index d1b7d1e..ca06b51 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,14 +19,25 @@ debug = ["bevy/bevy_gizmos", "bevy/bevy_render"] [dependencies] [dependencies.bevy] -version = "0.12" +version = "0.13" default-features = false [dev-dependencies] [dev-dependencies.bevy] -version = "0.12" -features = ["bevy_render", "bevy_winit", "x11", "bevy_core_pipeline", "bevy_sprite", "bevy_pbr"] +version = "0.13" +features = [ + "bevy_render", + "bevy_winit", + "bevy_core_pipeline", + "bevy_sprite", + "bevy_pbr", + "x11", + "multi-threaded", + "tonemapping_luts", + # Faster compilation + "dynamic_linking", +] default-features = false [[example]] diff --git a/examples/2d_cloth_cutter.rs b/examples/2d_cloth_cutter.rs index d4da3af..051b9ad 100644 --- a/examples/2d_cloth_cutter.rs +++ b/examples/2d_cloth_cutter.rs @@ -83,7 +83,7 @@ fn cut_sticks( mut commands: Commands, points: Query<&Transform, With>, sticks: Query<(Entity, &VerletStick)>, - mouse_input: Res>, + mouse_input: Res>, windows: Query<&Window, With>, ) { if !mouse_input.pressed(MouseButton::Left) { diff --git a/examples/3d_cloth.rs b/examples/3d_cloth.rs index 98eb869..18756fb 100644 --- a/examples/3d_cloth.rs +++ b/examples/3d_cloth.rs @@ -29,9 +29,9 @@ fn setup( transform: Transform::from_xyz(-50., 0., -50.).looking_at(Vec3::ZERO, Vec3::Y), ..Default::default() }); - let material = materials.add(Color::WHITE.into()); - let fixed_material = materials.add(Color::RED.into()); - let mesh = meshes.add(Mesh::from(shape::Cube::new(1.))); + let material = materials.add(Color::WHITE); + let fixed_material = materials.add(Color::RED); + let mesh = meshes.add(Cuboid::new(1., 1., 1.)); let stick_length: f32 = 2.; let (origin_x, origin_y) = (-5., 10.); let (points_x_count, points_y_count) = (20, 15); diff --git a/examples/3d_line.rs b/examples/3d_line.rs index 45a0763..7b15245 100644 --- a/examples/3d_line.rs +++ b/examples/3d_line.rs @@ -32,9 +32,9 @@ fn setup_free_line( mut materials: ResMut>, mut meshes: ResMut>, ) { - let material = materials.add(Color::WHITE.into()); - let fixed_material = materials.add(Color::RED.into()); - let mesh = meshes.add(Mesh::from(shape::Cube::new(1.))); + let material = materials.add(Color::WHITE); + let fixed_material = materials.add(Color::RED); + let mesh = meshes.add(Cuboid::new(1., 1., 1.)); let stick_length: f32 = 2.; let points_count = 10; let mut previous_entity = None; @@ -71,9 +71,9 @@ fn setup_fixed_line( mut materials: ResMut>, mut meshes: ResMut>, ) { - let material = materials.add(Color::WHITE.into()); - let fixed_material = materials.add(Color::RED.into()); - let mesh = meshes.add(Mesh::from(shape::Cube::new(1.))); + let material = materials.add(Color::WHITE); + let fixed_material = materials.add(Color::RED); + let mesh = meshes.add(Cuboid::new(1., 1., 1.)); let stick_length: f32 = 2.; let points_count = 20; let start_pos = -10.; diff --git a/src/systems/sticks.rs b/src/systems/sticks.rs index 943ce96..6c57579 100644 --- a/src/systems/sticks.rs +++ b/src/systems/sticks.rs @@ -3,7 +3,7 @@ use crate::{ components::{VerletLocked, VerletPoint, VerletStick}, VerletConfig, VerletStickMaxTension, }; -use bevy::{log, prelude::*}; +use bevy::{log, prelude::*, utils::HashMap}; #[allow( clippy::type_complexity, @@ -13,18 +13,20 @@ use bevy::{log, prelude::*}; pub fn update_sticks( config: Res, sticks_query: Query<&VerletStick>, - mut points_query: Query<(&mut Transform, Option<&VerletLocked>), With>, + mut points_query: Query<(Entity, &mut Transform, Option<&VerletLocked>), With>, ) { + let mut points_map: HashMap<_, _> = points_query + .iter_mut() + .map(|(e, t, l)| (e, (t, l))) + .collect(); for _ in 0..=config.sticks_computation_depth { for stick in sticks_query.iter() { - let [(mut transform_a, a_locked), (mut transform_b, b_locked)] = - match points_query.get_many_mut([stick.point_a_entity, stick.point_b_entity]) { - Ok(v) => v, - Err(e) => { - log::error!("Could not find point entities for stick: {}", e); - continue; - } - }; + let Some([(ref mut transform_a, a_locked), (ref mut transform_b, b_locked)]) = + points_map.get_many_mut([&stick.point_a_entity, &stick.point_b_entity]) + else { + log::error!("Could not find point entities for stick {stick:?}"); + continue; + }; let (a_locked, b_locked) = (a_locked.is_some(), b_locked.is_some()); if a_locked && b_locked { continue;