diff --git a/crates/bevy_math/src/curve/adaptors.rs b/crates/bevy_math/src/curve/adaptors.rs index 227a8ec3e0452..18780d51386f0 100644 --- a/crates/bevy_math/src/curve/adaptors.rs +++ b/crates/bevy_math/src/curve/adaptors.rs @@ -9,7 +9,7 @@ use core::fmt::{self, Debug}; use core::marker::PhantomData; #[cfg(feature = "bevy_reflect")] -use bevy_reflect::{utility::GenericTypePathCell, Reflect, TypePath}; +use bevy_reflect::{utility::GenericTypePathCell, FromReflect, Reflect, TypePath}; #[cfg(feature = "bevy_reflect")] mod paths { @@ -368,7 +368,7 @@ where #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( feature = "bevy_reflect", - derive(Reflect), + derive(Reflect, FromReflect), reflect(from_reflect = false) )] pub struct LinearReparamCurve { @@ -401,7 +401,11 @@ where /// sample times before sampling. Curves of this type are produced by [`Curve::reparametrize_by_curve`]. #[derive(Clone, Debug)] #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] -#[cfg_attr(feature = "bevy_reflect", derive(Reflect))] +#[cfg_attr( + feature = "bevy_reflect", + derive(Reflect, FromReflect), + reflect(from_reflect = false) +)] pub struct CurveReparamCurve { pub(crate) base: C, pub(crate) reparam_curve: D, @@ -430,7 +434,11 @@ where /// produced by [`Curve::graph`]. #[derive(Clone, Debug)] #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] -#[cfg_attr(feature = "bevy_reflect", derive(Reflect))] +#[cfg_attr( + feature = "bevy_reflect", + derive(Reflect, FromReflect), + reflect(from_reflect = false) +)] pub struct GraphCurve { pub(crate) base: C, #[cfg_attr(feature = "bevy_reflect", reflect(ignore))] @@ -456,7 +464,11 @@ where /// of this type are produced by [`Curve::zip`]. #[derive(Clone, Debug)] #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] -#[cfg_attr(feature = "bevy_reflect", derive(Reflect))] +#[cfg_attr( + feature = "bevy_reflect", + derive(Reflect, FromReflect), + reflect(from_reflect = false) +)] pub struct ZipCurve { pub(crate) domain: Interval, pub(crate) first: C, @@ -493,7 +505,11 @@ where /// Curves of this type are produced by [`Curve::chain`]. #[derive(Clone, Debug)] #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] -#[cfg_attr(feature = "bevy_reflect", derive(Reflect))] +#[cfg_attr( + feature = "bevy_reflect", + derive(Reflect, FromReflect), + reflect(from_reflect = false) +)] pub struct ChainCurve { pub(crate) first: C, pub(crate) second: D, @@ -539,7 +555,11 @@ where /// The original curve's domain must be bounded to get a valid [`ReverseCurve`]. #[derive(Clone, Debug)] #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] -#[cfg_attr(feature = "bevy_reflect", derive(Reflect))] +#[cfg_attr( + feature = "bevy_reflect", + derive(Reflect, FromReflect), + reflect(from_reflect = false) +)] pub struct ReverseCurve { pub(crate) curve: C, #[cfg_attr(feature = "bevy_reflect", reflect(ignore))] @@ -576,7 +596,11 @@ where /// The original curve's domain must be bounded to get a valid [`RepeatCurve`]. #[derive(Clone, Debug)] #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] -#[cfg_attr(feature = "bevy_reflect", derive(Reflect))] +#[cfg_attr( + feature = "bevy_reflect", + derive(Reflect, FromReflect), + reflect(from_reflect = false) +)] pub struct RepeatCurve { pub(crate) domain: Interval, pub(crate) curve: C, @@ -621,7 +645,11 @@ where /// The original curve's domain must be bounded to get a valid [`ForeverCurve`]. #[derive(Clone, Debug)] #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] -#[cfg_attr(feature = "bevy_reflect", derive(Reflect))] +#[cfg_attr( + feature = "bevy_reflect", + derive(Reflect, FromReflect), + reflect(from_reflect = false) +)] pub struct ForeverCurve { pub(crate) curve: C, #[cfg_attr(feature = "bevy_reflect", reflect(ignore))] @@ -661,7 +689,11 @@ where /// The original curve's domain must be right-finite to get a valid [`PingPongCurve`]. #[derive(Clone, Debug)] #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] -#[cfg_attr(feature = "bevy_reflect", derive(Reflect))] +#[cfg_attr( + feature = "bevy_reflect", + derive(Reflect, FromReflect), + reflect(from_reflect = false) +)] pub struct PingPongCurve { pub(crate) curve: C, #[cfg_attr(feature = "bevy_reflect", reflect(ignore))] @@ -711,7 +743,11 @@ where /// valid [`ContinuationCurve`]. #[derive(Clone, Debug)] #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] -#[cfg_attr(feature = "bevy_reflect", derive(Reflect))] +#[cfg_attr( + feature = "bevy_reflect", + derive(Reflect, FromReflect), + reflect(from_reflect = false) +)] pub struct ContinuationCurve { pub(crate) first: C, pub(crate) second: D, diff --git a/crates/bevy_math/src/curve/easing.rs b/crates/bevy_math/src/curve/easing.rs index 4a5a9784ca8e6..65886efa16042 100644 --- a/crates/bevy_math/src/curve/easing.rs +++ b/crates/bevy_math/src/curve/easing.rs @@ -31,7 +31,11 @@ impl Easing for ElasticCurve {} /// [unit interval]: `Interval::UNIT` #[derive(Clone, Debug)] #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] -#[cfg_attr(feature = "bevy_reflect", derive(bevy_reflect::Reflect))] +#[cfg_attr( + feature = "bevy_reflect", + derive(bevy_reflect::Reflect, bevy_reflect::FromReflect), + reflect(from_reflect = false) +)] pub struct EasingCurve where T: VectorSpace,