diff --git a/crates/bevy_color/Cargo.toml b/crates/bevy_color/Cargo.toml index 3d1efedcbe..d02f5efed1 100644 --- a/crates/bevy_color/Cargo.toml +++ b/crates/bevy_color/Cargo.toml @@ -10,10 +10,10 @@ keywords = ["bevy", "color"] rust-version = "1.76.0" [dependencies] -bevy_math = { path = "../bevy_math", version = "0.14.0-dev" } +bevy_math = { path = "../bevy_math", version = "0.14.0-dev", default-features = false } bevy_reflect = { path = "../bevy_reflect", version = "0.14.0-dev", features = [ "bevy", -] } +], optional = true } bytemuck = { version = "1", features = ["derive"] } serde = { version = "1.0", features = ["derive"], optional = true } thiserror = "1.0" @@ -21,6 +21,7 @@ wgpu-types = { version = "0.20", default-features = false, optional = true } encase = { version = "0.8", default-features = false } [features] +default = ["bevy_reflect"] serialize = ["serde"] [lints] diff --git a/crates/bevy_color/src/color.rs b/crates/bevy_color/src/color.rs index 385c3582aa..0700f59cc2 100644 --- a/crates/bevy_color/src/color.rs +++ b/crates/bevy_color/src/color.rs @@ -2,6 +2,7 @@ use crate::{ color_difference::EuclideanDistance, Alpha, Hsla, Hsva, Hue, Hwba, Laba, Lcha, LinearRgba, Luminance, Mix, Oklaba, Oklcha, Srgba, StandardColor, Xyza, }; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; /// An enumerated type that can represent any of the color types in this crate. @@ -39,11 +40,11 @@ use bevy_reflect::prelude::*; /// due to its perceptual uniformity and broad support for Bevy's color operations. /// To avoid the cost of repeated conversion, and ensure consistent results where that is desired, /// first convert this [`Color`] into your desired color space. -#[derive(Debug, Clone, Copy, PartialEq, Reflect)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] pub enum Color { diff --git a/crates/bevy_color/src/hsla.rs b/crates/bevy_color/src/hsla.rs index 1f49e48759..6b26fbff8d 100644 --- a/crates/bevy_color/src/hsla.rs +++ b/crates/bevy_color/src/hsla.rs @@ -3,6 +3,7 @@ use crate::{ StandardColor, Xyza, }; use bevy_math::{Vec3, Vec4}; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; /// Color in Hue-Saturation-Lightness (HSL) color space with alpha. @@ -11,11 +12,11 @@ use bevy_reflect::prelude::*; ///
#[doc = include_str!("../docs/diagrams/model_graph.svg")] ///
-#[derive(Debug, Clone, Copy, PartialEq, Reflect)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] pub struct Hsla { diff --git a/crates/bevy_color/src/hsva.rs b/crates/bevy_color/src/hsva.rs index cf89ea1013..3e6fefce05 100644 --- a/crates/bevy_color/src/hsva.rs +++ b/crates/bevy_color/src/hsva.rs @@ -2,6 +2,7 @@ use crate::{ Alpha, ColorToComponents, Gray, Hue, Hwba, Lcha, LinearRgba, Mix, Srgba, StandardColor, Xyza, }; use bevy_math::{Vec3, Vec4}; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; /// Color in Hue-Saturation-Value (HSV) color space with alpha. @@ -10,11 +11,11 @@ use bevy_reflect::prelude::*; ///
#[doc = include_str!("../docs/diagrams/model_graph.svg")] ///
-#[derive(Debug, Clone, Copy, PartialEq, Reflect)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] pub struct Hsva { diff --git a/crates/bevy_color/src/hwba.rs b/crates/bevy_color/src/hwba.rs index 094b363f5b..078f56cfb7 100644 --- a/crates/bevy_color/src/hwba.rs +++ b/crates/bevy_color/src/hwba.rs @@ -6,6 +6,7 @@ use crate::{ Alpha, ColorToComponents, Gray, Hue, Lcha, LinearRgba, Mix, Srgba, StandardColor, Xyza, }; use bevy_math::{Vec3, Vec4}; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; /// Color in Hue-Whiteness-Blackness (HWB) color space with alpha. @@ -14,11 +15,11 @@ use bevy_reflect::prelude::*; ///
#[doc = include_str!("../docs/diagrams/model_graph.svg")] ///
-#[derive(Debug, Clone, Copy, PartialEq, Reflect)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] pub struct Hwba { diff --git a/crates/bevy_color/src/laba.rs b/crates/bevy_color/src/laba.rs index 35943aa3b9..391bb9b4fe 100644 --- a/crates/bevy_color/src/laba.rs +++ b/crates/bevy_color/src/laba.rs @@ -3,6 +3,7 @@ use crate::{ Luminance, Mix, Oklaba, Srgba, StandardColor, Xyza, }; use bevy_math::{Vec3, Vec4}; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; /// Color in LAB color space, with alpha @@ -10,11 +11,11 @@ use bevy_reflect::prelude::*; ///
#[doc = include_str!("../docs/diagrams/model_graph.svg")] ///
-#[derive(Debug, Clone, Copy, PartialEq, Reflect)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] pub struct Laba { diff --git a/crates/bevy_color/src/lcha.rs b/crates/bevy_color/src/lcha.rs index ddb039f194..b1b63c91ac 100644 --- a/crates/bevy_color/src/lcha.rs +++ b/crates/bevy_color/src/lcha.rs @@ -3,6 +3,7 @@ use crate::{ Xyza, }; use bevy_math::{Vec3, Vec4}; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; /// Color in LCH color space, with alpha @@ -10,11 +11,11 @@ use bevy_reflect::prelude::*; ///
#[doc = include_str!("../docs/diagrams/model_graph.svg")] ///
-#[derive(Debug, Clone, Copy, PartialEq, Reflect)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] pub struct Lcha { diff --git a/crates/bevy_color/src/lib.rs b/crates/bevy_color/src/lib.rs index 923a603c0c..95c51a494d 100644 --- a/crates/bevy_color/src/lib.rs +++ b/crates/bevy_color/src/lib.rs @@ -147,7 +147,6 @@ where Self: core::fmt::Debug, Self: Clone + Copy, Self: PartialEq, - Self: bevy_reflect::Reflect, Self: Default, Self: From + Into, Self: From + Into, diff --git a/crates/bevy_color/src/linear_rgba.rs b/crates/bevy_color/src/linear_rgba.rs index 2dafa15eed..3a9a0fd5d2 100644 --- a/crates/bevy_color/src/linear_rgba.rs +++ b/crates/bevy_color/src/linear_rgba.rs @@ -3,6 +3,7 @@ use crate::{ ColorToPacked, Gray, Luminance, Mix, StandardColor, }; use bevy_math::{Vec3, Vec4}; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; use bytemuck::{Pod, Zeroable}; @@ -11,11 +12,11 @@ use bytemuck::{Pod, Zeroable}; ///
#[doc = include_str!("../docs/diagrams/model_graph.svg")] ///
-#[derive(Debug, Clone, Copy, PartialEq, Reflect, Pod, Zeroable)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq, Pod, Zeroable)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] #[repr(C)] diff --git a/crates/bevy_color/src/oklaba.rs b/crates/bevy_color/src/oklaba.rs index ec725adbdf..bf0ffdba16 100644 --- a/crates/bevy_color/src/oklaba.rs +++ b/crates/bevy_color/src/oklaba.rs @@ -3,6 +3,7 @@ use crate::{ Gray, Hsla, Hsva, Hwba, Lcha, LinearRgba, Luminance, Mix, Srgba, StandardColor, Xyza, }; use bevy_math::{Vec3, Vec4}; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; /// Color in Oklab color space, with alpha @@ -10,11 +11,11 @@ use bevy_reflect::prelude::*; ///
#[doc = include_str!("../docs/diagrams/model_graph.svg")] ///
-#[derive(Debug, Clone, Copy, PartialEq, Reflect)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] pub struct Oklaba { diff --git a/crates/bevy_color/src/oklcha.rs b/crates/bevy_color/src/oklcha.rs index 72b178fdc9..08f3fac908 100644 --- a/crates/bevy_color/src/oklcha.rs +++ b/crates/bevy_color/src/oklcha.rs @@ -3,6 +3,7 @@ use crate::{ Laba, Lcha, LinearRgba, Luminance, Mix, Oklaba, Srgba, StandardColor, Xyza, }; use bevy_math::{Vec3, Vec4}; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; /// Color in Oklch color space, with alpha @@ -10,11 +11,11 @@ use bevy_reflect::prelude::*; ///
#[doc = include_str!("../docs/diagrams/model_graph.svg")] ///
-#[derive(Debug, Clone, Copy, PartialEq, Reflect)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] pub struct Oklcha { diff --git a/crates/bevy_color/src/srgba.rs b/crates/bevy_color/src/srgba.rs index f8396a9394..100d35632d 100644 --- a/crates/bevy_color/src/srgba.rs +++ b/crates/bevy_color/src/srgba.rs @@ -4,6 +4,7 @@ use crate::{ Luminance, Mix, StandardColor, Xyza, }; use bevy_math::{Vec3, Vec4}; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; use thiserror::Error; @@ -12,11 +13,11 @@ use thiserror::Error; ///
#[doc = include_str!("../docs/diagrams/model_graph.svg")] ///
-#[derive(Debug, Clone, Copy, PartialEq, Reflect)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] pub struct Srgba { diff --git a/crates/bevy_color/src/xyza.rs b/crates/bevy_color/src/xyza.rs index ea20a2ee72..a9fb422bef 100644 --- a/crates/bevy_color/src/xyza.rs +++ b/crates/bevy_color/src/xyza.rs @@ -3,6 +3,7 @@ use crate::{ StandardColor, }; use bevy_math::{Vec3, Vec4}; +#[cfg(feature = "bevy_reflect")] use bevy_reflect::prelude::*; /// [CIE 1931](https://en.wikipedia.org/wiki/CIE_1931_color_space) color space, also known as XYZ, with an alpha channel. @@ -10,11 +11,11 @@ use bevy_reflect::prelude::*; ///
#[doc = include_str!("../docs/diagrams/model_graph.svg")] ///
-#[derive(Debug, Clone, Copy, PartialEq, Reflect)] -#[reflect(PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)] +#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(PartialEq, Default))] +#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( - feature = "serialize", - derive(serde::Serialize, serde::Deserialize), + all(feature = "serialize", feature = "bevy_reflect"), reflect(Serialize, Deserialize) )] pub struct Xyza {