diff --git a/crates/bevy_reflect/src/impls/glam.rs b/crates/bevy_reflect/src/impls/glam.rs index 2310e640eded1..c84fcbffaaf27 100644 --- a/crates/bevy_reflect/src/impls/glam.rs +++ b/crates/bevy_reflect/src/impls/glam.rs @@ -88,6 +88,31 @@ impl_reflect_struct!( } ); +impl_reflect_struct!( + #[reflect(Debug, PartialEq, Default)] + struct BVec2 { + x: bool, + y: bool, + } +); +impl_reflect_struct!( + #[reflect(Debug, PartialEq, Default)] + struct BVec3 { + x: bool, + y: bool, + z: bool, + } +); +impl_reflect_struct!( + #[reflect(Debug, PartialEq, Default)] + struct BVec4 { + x: bool, + y: bool, + z: bool, + w: bool, + } +); + impl_reflect_struct!( #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] struct DVec2 { @@ -113,6 +138,13 @@ impl_reflect_struct!( } ); +impl_reflect_struct!( + #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] + struct Mat2 { + x_axis: Vec2, + y_axis: Vec2, + } +); impl_reflect_struct!( #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] struct Mat3 { @@ -121,6 +153,14 @@ impl_reflect_struct!( z_axis: Vec3, } ); +impl_reflect_struct!( + #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] + struct Mat3A { + x_axis: Vec3A, + y_axis: Vec3A, + z_axis: Vec3A, + } +); impl_reflect_struct!( #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] struct Mat4 { @@ -131,6 +171,13 @@ impl_reflect_struct!( } ); +impl_reflect_struct!( + #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] + struct DMat2 { + x_axis: DVec2, + y_axis: DVec2, + } +); impl_reflect_struct!( #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] struct DMat3 { @@ -149,6 +196,36 @@ impl_reflect_struct!( } ); +impl_reflect_struct!( + #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] + struct Affine2 { + matrix2: Mat2, + translation: Vec2, + } +); +impl_reflect_struct!( + #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] + struct Affine3A { + matrix3: Mat3A, + translation: Vec3A, + } +); + +impl_reflect_struct!( + #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] + struct DAffine2 { + matrix2: DMat2, + translation: DVec2, + } +); +impl_reflect_struct!( + #[reflect(Debug, PartialEq, Serialize, Deserialize, Default)] + struct DAffine3 { + matrix3: DMat3, + translation: DVec3, + } +); + // Quat fields are read-only (as of now), and reflection is currently missing // mechanisms for read-only fields. I doubt those mechanisms would be added, // so for now quaternions will remain as values. They are represented identically @@ -158,3 +235,13 @@ impl_reflect_value!(DQuat(Debug, PartialEq, Serialize, Deserialize, Default)); impl_from_reflect_value!(Quat); impl_from_reflect_value!(DQuat); + +impl_reflect_value!(EulerRot(Debug, Default)); + +// glam type aliases these to the non simd versions when there is no support (this breaks wasm builds for example) +// ideally it shouldn't do that and there's an issue on glam for this +// https://github.com/bitshifter/glam-rs/issues/306 +#[cfg(any(target_feature = "sse2", target_feature = "simd128"))] +impl_reflect_value!(BVec3A(Debug, PartialEq, Default)); +#[cfg(any(target_feature = "sse2", target_feature = "simd128"))] +impl_reflect_value!(BVec4A(Debug, PartialEq, Default));