Reflect derived traits on all components and resources: bevy_sprite (#15227)

Solves https://github.com/bevyengine/bevy/issues/15187 for bevy_sprite
This commit is contained in:
Blazepaws 2024-09-15 19:10:53 +02:00 committed by GitHub
parent 274c97d415
commit 07e79f3e9f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 12 additions and 8 deletions

View file

@ -78,7 +78,7 @@ pub enum SpriteSystem {
/// ///
/// Right now, this is used for `Text`. /// Right now, this is used for `Text`.
#[derive(Component, Reflect, Clone, Copy, Debug, Default)] #[derive(Component, Reflect, Clone, Copy, Debug, Default)]
#[reflect(Component, Default)] #[reflect(Component, Default, Debug)]
pub struct SpriteSource; pub struct SpriteSource;
/// A convenient alias for `With<Mesh2dHandle>>`, for use with /// A convenient alias for `With<Mesh2dHandle>>`, for use with

View file

@ -52,7 +52,7 @@ use crate::Material2dBindGroupId;
/// ///
/// It wraps a [`Handle<Mesh>`] to differentiate from the 3d pipelines which use the handles directly as components /// It wraps a [`Handle<Mesh>`] to differentiate from the 3d pipelines which use the handles directly as components
#[derive(Default, Clone, Component, Debug, Reflect, PartialEq, Eq, Deref, DerefMut)] #[derive(Default, Clone, Component, Debug, Reflect, PartialEq, Eq, Deref, DerefMut)]
#[reflect(Default, Component)] #[reflect(Default, Component, Debug, PartialEq)]
pub struct Mesh2dHandle(pub Handle<Mesh>); pub struct Mesh2dHandle(pub Handle<Mesh>);
impl From<Handle<Mesh>> for Mesh2dHandle { impl From<Handle<Mesh>> for Mesh2dHandle {

View file

@ -56,7 +56,7 @@ impl Plugin for Wireframe2dPlugin {
/// ///
/// This requires the [`Wireframe2dPlugin`] to be enabled. /// This requires the [`Wireframe2dPlugin`] to be enabled.
#[derive(Component, Debug, Clone, Default, Reflect, Eq, PartialEq)] #[derive(Component, Debug, Clone, Default, Reflect, Eq, PartialEq)]
#[reflect(Component, Default)] #[reflect(Component, Default, Debug, PartialEq)]
pub struct Wireframe2d; pub struct Wireframe2d;
/// Sets the color of the [`Wireframe2d`] of the entity it is attached to. /// Sets the color of the [`Wireframe2d`] of the entity it is attached to.
@ -65,7 +65,7 @@ pub struct Wireframe2d;
/// ///
/// This overrides the [`Wireframe2dConfig::default_color`]. /// This overrides the [`Wireframe2dConfig::default_color`].
#[derive(Component, Debug, Clone, Default, Reflect)] #[derive(Component, Debug, Clone, Default, Reflect)]
#[reflect(Component, Default)] #[reflect(Component, Default, Debug)]
pub struct Wireframe2dColor { pub struct Wireframe2dColor {
pub color: Color, pub color: Color,
} }
@ -75,11 +75,11 @@ pub struct Wireframe2dColor {
/// ///
/// This requires the [`Wireframe2dPlugin`] to be enabled. /// This requires the [`Wireframe2dPlugin`] to be enabled.
#[derive(Component, Debug, Clone, Default, Reflect, Eq, PartialEq)] #[derive(Component, Debug, Clone, Default, Reflect, Eq, PartialEq)]
#[reflect(Component, Default)] #[reflect(Component, Default, Debug, PartialEq)]
pub struct NoWireframe2d; pub struct NoWireframe2d;
#[derive(Resource, Debug, Clone, Default, ExtractResource, Reflect)] #[derive(Resource, Debug, Clone, Default, ExtractResource, Reflect)]
#[reflect(Resource)] #[reflect(Resource, Debug, Default)]
pub struct Wireframe2dConfig { pub struct Wireframe2dConfig {
/// Whether to show wireframes for all 2D meshes. /// Whether to show wireframes for all 2D meshes.
/// Can be overridden for individual meshes by adding a [`Wireframe2d`] or [`NoWireframe2d`] component. /// Can be overridden for individual meshes by adding a [`Wireframe2d`] or [`NoWireframe2d`] component.

View file

@ -9,7 +9,7 @@ use crate::TextureSlicer;
/// ///
/// This is commonly used as a component within [`SpriteBundle`](crate::bundle::SpriteBundle). /// This is commonly used as a component within [`SpriteBundle`](crate::bundle::SpriteBundle).
#[derive(Component, Debug, Default, Clone, Reflect)] #[derive(Component, Debug, Default, Clone, Reflect)]
#[reflect(Component, Default)] #[reflect(Component, Default, Debug)]
#[repr(C)] #[repr(C)]
pub struct Sprite { pub struct Sprite {
/// The sprite's color tint /// The sprite's color tint
@ -43,7 +43,7 @@ impl Sprite {
/// Controls how the image is altered when scaled. /// Controls how the image is altered when scaled.
#[derive(Component, Debug, Clone, Reflect)] #[derive(Component, Debug, Clone, Reflect)]
#[reflect(Component)] #[reflect(Component, Debug)]
pub enum ImageScaleMode { pub enum ImageScaleMode {
/// The texture will be cut in 9 slices, keeping the texture in proportions on resize /// The texture will be cut in 9 slices, keeping the texture in proportions on resize
Sliced(TextureSlicer), Sliced(TextureSlicer),
@ -62,6 +62,7 @@ pub enum ImageScaleMode {
/// How a sprite is positioned relative to its [`Transform`](bevy_transform::components::Transform). /// How a sprite is positioned relative to its [`Transform`](bevy_transform::components::Transform).
/// It defaults to `Anchor::Center`. /// It defaults to `Anchor::Center`.
#[derive(Component, Debug, Clone, Copy, PartialEq, Default, Reflect)] #[derive(Component, Debug, Clone, Copy, PartialEq, Default, Reflect)]
#[reflect(Component, Default, Debug, PartialEq)]
#[doc(alias = "pivot")] #[doc(alias = "pivot")]
pub enum Anchor { pub enum Anchor {
#[default] #[default]

View file

@ -1,6 +1,8 @@
use bevy_asset::{Asset, AssetId, Assets, Handle}; use bevy_asset::{Asset, AssetId, Assets, Handle};
use bevy_ecs::component::Component; use bevy_ecs::component::Component;
use bevy_ecs::reflect::ReflectComponent;
use bevy_math::{URect, UVec2}; use bevy_math::{URect, UVec2};
use bevy_reflect::std_traits::ReflectDefault;
use bevy_reflect::Reflect; use bevy_reflect::Reflect;
use bevy_render::texture::Image; use bevy_render::texture::Image;
use bevy_utils::HashMap; use bevy_utils::HashMap;
@ -142,6 +144,7 @@ impl TextureAtlasLayout {
/// - [`sprite animation event example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_animation.rs) /// - [`sprite animation event example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_animation.rs)
/// - [`texture atlas example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/texture_atlas.rs) /// - [`texture atlas example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/texture_atlas.rs)
#[derive(Component, Default, Debug, Clone, Reflect)] #[derive(Component, Default, Debug, Clone, Reflect)]
#[reflect(Component, Default, Debug)]
pub struct TextureAtlas { pub struct TextureAtlas {
/// Texture atlas layout handle /// Texture atlas layout handle
pub layout: Handle<TextureAtlasLayout>, pub layout: Handle<TextureAtlasLayout>,