diff --git a/Cargo.toml b/Cargo.toml index 3991a851..90707268 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -124,6 +124,8 @@ glam-29 = ["firewheel-core/glam-29"] glam-30 = ["firewheel-core/glam-30"] # Enables `glam::Vec2` and `glam::Vec3` parameter derives for glam 0.31. glam-31 = ["firewheel-core/glam-31"] +# Enables `glam::Vec2` and `glam::Vec3` parameter derives for glam 0.32. +glam-32 = ["firewheel-core/glam-32"] # Enables the `MIDI` event type, using the `wmidi` crate. midi_events = ["firewheel-core/midi_events"] # Enables serde derives for types @@ -195,11 +197,11 @@ arrayvec = { version = "0.7", default-features = false } bitflags = "2" thunderdome = { version = "0.6", default-features = false } firewheel-macros = { path = "crates/firewheel-macros", version = "0.10.0" } -bevy_platform = { version = "0.18", default-features = false, features = [ +bevy_platform = { version = "0.19.0", default-features = false, features = [ "alloc", ] } -bevy_ecs = { version = "0.18", default-features = false } -bevy_reflect = { version = "0.18", default-features = false } +bevy_ecs = { version = "0.19.0", default-features = false } +bevy_reflect = { version = "0.19.0", default-features = false } fixed-resample = { version = "0.11.2", default-features = false } symphonium = { version = "0.11.0", default-features = false, features = ["decode-native"] } num-traits = { version = "0.2", default-features = false } diff --git a/crates/firewheel-core/Cargo.toml b/crates/firewheel-core/Cargo.toml index 22d0790e..79150388 100644 --- a/crates/firewheel-core/Cargo.toml +++ b/crates/firewheel-core/Cargo.toml @@ -47,6 +47,7 @@ std = [ "glam-29?/std", "glam-30?/std", "glam-31?/std", + "glam-32?/std", "portable-atomic/std", "num-traits/std", "thiserror/std", @@ -61,7 +62,8 @@ libm = [ "num-traits/libm", "glam-29?/nostd-libm", "glam-30?/nostd-libm", - "glam-31?/nostd-libm" + "glam-31?/nostd-libm", + "glam-32?/nostd-libm" ] # Enables scheduling events for audio nodes. # @@ -93,6 +95,8 @@ glam-29 = ["dep:glam-29"] glam-30 = ["dep:glam-30"] # Enables `glam::Vec2` and `glam::Vec3` parameter derives for glam 0.31. glam-31 = ["dep:glam-31"] +# Enables `glam::Vec2` and `glam::Vec3` parameter derives for glam 0.32. +glam-32 = ["dep:glam-32"] # Enables the `MIDI` event type, using the `wmidi` crate. midi_events = ["dep:wmidi"] # Enables serde derives for types @@ -116,6 +120,7 @@ audioadapter-sample.workspace = true glam-29 = { package = "glam", version = "0.29", default-features = false, optional = true } glam-30 = { package = "glam", version = "0.30", default-features = false, optional = true } glam-31 = { package = "glam", version = "0.31", default-features = false, optional = true } +glam-32 = { package = "glam", version = "0.32", default-features = false, optional = true } # TODO: Remove this once `bevy_platform` exposes the atomic float types from `portable-atomic`. portable-atomic = { version = "1", default-features = false, features = [ "fallback", diff --git a/crates/firewheel-core/src/diff/leaf.rs b/crates/firewheel-core/src/diff/leaf.rs index 73cd7046..55b6c161 100644 --- a/crates/firewheel-core/src/diff/leaf.rs +++ b/crates/firewheel-core/src/diff/leaf.rs @@ -167,6 +167,16 @@ primitive_diff!(glam_30::Vec2, Vector2D); #[cfg(feature = "glam-30")] primitive_diff!(glam_30::Vec3, Vector3D); +#[cfg(feature = "glam-31")] +primitive_diff!(glam_31::Vec2, Vector2D); +#[cfg(feature = "glam-31")] +primitive_diff!(glam_31::Vec3, Vector3D); + +#[cfg(feature = "glam-32")] +primitive_diff!(glam_32::Vec2, Vector2D); +#[cfg(feature = "glam-32")] +primitive_diff!(glam_32::Vec3, Vector3D); + impl Diff for ArcGc { fn diff(&self, baseline: &Self, path: PathBuilder, event_queue: &mut E) { if !ArcGc::ptr_eq(self, baseline) { @@ -376,3 +386,13 @@ non_trivial_notify!(glam_29::Vec3); non_trivial_notify!(glam_30::Vec2); #[cfg(feature = "glam-30")] non_trivial_notify!(glam_30::Vec3); + +#[cfg(feature = "glam-31")] +non_trivial_notify!(glam_31::Vec2); +#[cfg(feature = "glam-31")] +non_trivial_notify!(glam_31::Vec3); + +#[cfg(feature = "glam-32")] +non_trivial_notify!(glam_32::Vec2); +#[cfg(feature = "glam-32")] +non_trivial_notify!(glam_32::Vec3); diff --git a/crates/firewheel-core/src/diff/notify.rs b/crates/firewheel-core/src/diff/notify.rs index 4bfc7d95..73cf8f47 100644 --- a/crates/firewheel-core/src/diff/notify.rs +++ b/crates/firewheel-core/src/diff/notify.rs @@ -292,7 +292,7 @@ mod reflect { bevy_reflect::utility::GenericTypeInfoCell::new(); CELL.get_or_insert::(|| { bevy_reflect::TypeInfo::Struct( - bevy_reflect::StructInfo::new::(&[ + bevy_reflect::structs::StructInfo::new::(&[ bevy_reflect::NamedField::new::("value").with_custom_attributes( bevy_reflect::attributes::CustomAttributes::default(), ), @@ -401,7 +401,7 @@ mod reflect { } } - impl bevy_reflect::Struct for Notify + impl bevy_reflect::prelude::Struct for Notify where Notify: ::core::any::Any + ::core::marker::Send + ::core::marker::Sync, T: Clone @@ -449,12 +449,12 @@ mod reflect { 1usize } - fn iter_fields<'a>(&'a self) -> bevy_reflect::FieldIter<'a> { - bevy_reflect::FieldIter::new(self) + fn iter_fields<'a>(&'a self) -> bevy_reflect::structs::FieldIter<'a> { + bevy_reflect::structs::FieldIter::new(self) } - fn to_dynamic_struct(&self) -> bevy_reflect::DynamicStruct { - let mut dynamic: bevy_reflect::DynamicStruct = Default::default(); + fn to_dynamic_struct(&self) -> bevy_reflect::structs::DynamicStruct { + let mut dynamic: bevy_reflect::structs::DynamicStruct = Default::default(); dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info( self, )); @@ -464,6 +464,10 @@ mod reflect { ); dynamic } + + fn index_of_name(&self, name: &str) -> Option { + (name == "value").then_some(0) + } } impl bevy_reflect::PartialReflect for Notify @@ -488,11 +492,8 @@ mod reflect { if let bevy_reflect::ReflectRef::Struct(struct_value) = bevy_reflect::PartialReflect::reflect_ref(value) { - for (i, value) in ::core::iter::Iterator::enumerate( - bevy_reflect::Struct::iter_fields(struct_value), - ) { - let name = bevy_reflect::Struct::name_at(struct_value, i).unwrap(); - if let Some(v) = bevy_reflect::Struct::field_mut(self, name) { + for (name, value) in struct_value { + if let Some(v) = bevy_reflect::prelude::Struct::field_mut(self, name) { bevy_reflect::PartialReflect::try_apply(v, value)?; } } @@ -558,7 +559,7 @@ mod reflect { } fn reflect_partial_eq(&self, value: &dyn bevy_reflect::PartialReflect) -> Option { - (bevy_reflect::struct_partial_eq)(self, value) + (bevy_reflect::structs::struct_partial_eq)(self, value) } #[inline] @@ -585,9 +586,9 @@ mod reflect { { let mut this = ::default(); if let Some(field) = (|| { - ::from_reflect(bevy_reflect::Struct::field( - ref_struct, "value", - )?) + ::from_reflect( + bevy_reflect::prelude::Struct::field(ref_struct, "value")?, + ) })() { this.value = field; } diff --git a/crates/firewheel-core/src/event.rs b/crates/firewheel-core/src/event.rs index e93679eb..5dd6bbcc 100644 --- a/crates/firewheel-core/src/event.rs +++ b/crates/firewheel-core/src/event.rs @@ -326,6 +326,16 @@ param_data_from!(glam_30::Vec2, Vector2D); #[cfg(feature = "glam-30")] param_data_from!(glam_30::Vec3, Vector3D); +#[cfg(feature = "glam-31")] +param_data_from!(glam_31::Vec2, Vector2D); +#[cfg(feature = "glam-31")] +param_data_from!(glam_31::Vec3, Vector3D); + +#[cfg(feature = "glam-32")] +param_data_from!(glam_32::Vec2, Vector2D); +#[cfg(feature = "glam-32")] +param_data_from!(glam_32::Vec3, Vector3D); + impl From<()> for ParamData { fn from(_value: ()) -> Self { Self::None diff --git a/crates/firewheel-core/src/vector.rs b/crates/firewheel-core/src/vector.rs index c06ddda7..54d69068 100644 --- a/crates/firewheel-core/src/vector.rs +++ b/crates/firewheel-core/src/vector.rs @@ -166,3 +166,31 @@ impl From for glam_31::Vec3 { Self::new(value.x, value.y, value.z) } } + +#[cfg(feature = "glam-32")] +impl From for Vec2 { + fn from(value: glam_32::Vec2) -> Self { + Self::new(value.x, value.y) + } +} + +#[cfg(feature = "glam-32")] +impl From for Vec3 { + fn from(value: glam_32::Vec3) -> Self { + Self::new(value.x, value.y, value.z) + } +} + +#[cfg(feature = "glam-32")] +impl From for glam_32::Vec2 { + fn from(value: Vec2) -> Self { + Self::new(value.x, value.y) + } +} + +#[cfg(feature = "glam-32")] +impl From for glam_32::Vec3 { + fn from(value: Vec3) -> Self { + Self::new(value.x, value.y, value.z) + } +} diff --git a/crates/firewheel-macros/Cargo.toml b/crates/firewheel-macros/Cargo.toml index 03075b9f..11f09099 100644 --- a/crates/firewheel-macros/Cargo.toml +++ b/crates/firewheel-macros/Cargo.toml @@ -18,5 +18,5 @@ proc-macro = true syn = "2.0" quote = "1.0" proc-macro2 = "1.0" -bevy_macro_utils = "0.18" +bevy_macro_utils = "0.19.0" toml_edit = { version = "0.23.9", default-features = false, features = ["parse"] }