From a58fc3756749d5489953cfabb7893fa770192a40 Mon Sep 17 00:00:00 2001 From: Christian Hughes Date: Tue, 8 Mar 2022 00:14:21 +0000 Subject: [PATCH] Add Reflect support for DMat3, DMat4, DQuat (#4128) ## Objective A step towards `f64` `Transform`s (#1680). For now, I am rolling my own `Transform`. But in order to derive Reflect, I specifically need `DQuat` to be reflectable. ```rust #[derive(Component, Reflect, Copy, Clone, PartialEq, Debug)] #[reflect(Component, PartialEq)] pub struct Transform { pub translation: DVec3, pub rotation: DQuat, // error: the trait `bevy::prelude::Reflect` is not implemented for `DQuat` pub scale: DVec3, } ``` ## Solution I have added a `DQuat` impl for `Reflect` alongside the other glam impls. I've also added impls for `DMat3` and `DMat4` to match. --- crates/bevy_reflect/src/impls/glam.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/bevy_reflect/src/impls/glam.rs b/crates/bevy_reflect/src/impls/glam.rs index cda30156b68ca2..077a202fbb8721 100644 --- a/crates/bevy_reflect/src/impls/glam.rs +++ b/crates/bevy_reflect/src/impls/glam.rs @@ -19,6 +19,9 @@ impl_reflect_value!(DVec4(PartialEq, Serialize, Deserialize)); impl_reflect_value!(Mat3(PartialEq, Serialize, Deserialize)); impl_reflect_value!(Mat4(PartialEq, Serialize, Deserialize)); impl_reflect_value!(Quat(PartialEq, Serialize, Deserialize)); +impl_reflect_value!(DMat3(PartialEq, Serialize, Deserialize)); +impl_reflect_value!(DMat4(PartialEq, Serialize, Deserialize)); +impl_reflect_value!(DQuat(PartialEq, Serialize, Deserialize)); impl_from_reflect_value!(IVec2); impl_from_reflect_value!(IVec3); @@ -36,3 +39,6 @@ impl_from_reflect_value!(DVec4); impl_from_reflect_value!(Mat3); impl_from_reflect_value!(Mat4); impl_from_reflect_value!(Quat); +impl_from_reflect_value!(DMat3); +impl_from_reflect_value!(DMat4); +impl_from_reflect_value!(DQuat);