use crate::{texture_atlas::TextureAtlas, ImageScaleMode, Sprite}; use bevy_asset::Handle; use bevy_ecs::bundle::Bundle; use bevy_render::{ texture::Image, view::{InheritedVisibility, ViewVisibility, Visibility}, }; use bevy_transform::components::{GlobalTransform, Transform}; /// A [`Bundle`] of components for drawing a single sprite from an image. #[derive(Bundle, Clone, Default)] pub struct SpriteBundle { /// Specifies the rendering properties of the sprite, such as color tint and flip. pub sprite: Sprite, /// Controls how the image is altered when scaled. pub scale_mode: ImageScaleMode, /// The local transform of the sprite, relative to its parent. pub transform: Transform, /// The absolute transform of the sprite. This should generally not be written to directly. pub global_transform: GlobalTransform, /// A reference-counted handle to the image asset to be drawn. pub texture: Handle, /// User indication of whether an entity is visible pub visibility: Visibility, /// Inherited visibility of an entity. pub inherited_visibility: InheritedVisibility, /// Algorithmically-computed indication of whether an entity is visible and should be extracted for rendering pub view_visibility: ViewVisibility, } /// A [`Bundle`] of components for drawing a single sprite from a sprite sheet (also referred /// to as a `TextureAtlas`) or for animated sprites. /// /// Note: /// This bundle is identical to [`SpriteBundle`] with an additional [`TextureAtlas`] component. /// /// Check the following examples for usage: /// - [`animated sprite sheet example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/sprite_sheet.rs) /// - [`texture atlas example`](https://github.com/bevyengine/bevy/blob/latest/examples/2d/texture_atlas.rs) #[derive(Bundle, Clone, Default)] pub struct SpriteSheetBundle { pub sprite: Sprite, /// Controls how the image is altered when scaled. pub scale_mode: ImageScaleMode, pub transform: Transform, pub global_transform: GlobalTransform, /// The sprite sheet base texture pub texture: Handle, /// The sprite sheet texture atlas, allowing to draw a custom section of `texture`. pub atlas: TextureAtlas, /// User indication of whether an entity is visible pub visibility: Visibility, pub inherited_visibility: InheritedVisibility, /// Algorithmically-computed indication of whether an entity is visible and should be extracted for rendering pub view_visibility: ViewVisibility, }