From 3232a5339570788655b4180efa4d393856afefa8 Mon Sep 17 00:00:00 2001 From: Charles Bournhonesque Date: Tue, 3 Jan 2023 18:21:00 -0500 Subject: [PATCH 1/5] add rescalte_texture --- src/components.rs | 8 +++++++- src/systems.rs | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/components.rs b/src/components.rs index fa0ba26..9083b34 100644 --- a/src/components.rs +++ b/src/components.rs @@ -2,7 +2,7 @@ use bevy_asset::Handle; use bevy_ecs::prelude::{Bundle, Component, Entity, ReflectComponent}; -use bevy_math::Vec3; +use bevy_math::{Vec2, Vec3}; use bevy_reflect::prelude::*; use bevy_render::prelude::{Image, VisibilityBundle}; use bevy_sprite::TextureAtlas; @@ -75,6 +75,11 @@ pub struct ParticleSystem { /// The texture used for each particle. pub texture: ParticleTexture, + /// If provided, re-scale the texture size + /// + /// Note that this the inherent Sprite size, which can still be scaled up with `Transform` + pub rescale_texture: Option, + /// The number of particles to spawn per second. /// /// This uses a [`ValueOverTime`] so that the spawn rate can vary over the lifetime of the system. @@ -165,6 +170,7 @@ impl Default for ParticleSystem { Self { max_particles: 100, texture: ParticleTexture::Sprite(Handle::default()), + rescale_texture: None, spawn_rate_per_second: 5.0.into(), spawn_radius: 0.0.into(), emitter_shape: std::f32::consts::TAU, diff --git a/src/systems.rs b/src/systems.rs index 6a95cf3..97b7a87 100644 --- a/src/systems.rs +++ b/src/systems.rs @@ -154,6 +154,7 @@ pub fn particle_spawner( ParticleTexture::Sprite(image_handle) => { entity_commands.insert(SpriteBundle { sprite: Sprite { + custom_size: particle_system.rescale_texture, color: particle_system.color.at_lifetime_pct(0.0), ..Sprite::default() }, @@ -168,6 +169,7 @@ pub fn particle_spawner( } => { entity_commands.insert(SpriteSheetBundle { sprite: TextureAtlasSprite { + custom_size: particle_system.rescale_texture, color: particle_system.color.at_lifetime_pct(0.0), index: index.get_value(&mut rng), ..TextureAtlasSprite::default() @@ -204,6 +206,7 @@ pub fn particle_spawner( ParticleTexture::Sprite(image_handle) => { entity_commands.insert(SpriteBundle { sprite: Sprite { + custom_size: particle_system.rescale_texture, color: particle_system.color.at_lifetime_pct(0.0), ..Sprite::default() }, @@ -218,6 +221,7 @@ pub fn particle_spawner( } => { entity_commands.insert(SpriteSheetBundle { sprite: TextureAtlasSprite { + custom_size: particle_system.rescale_texture, color: particle_system.color.at_lifetime_pct(0.0), index: index.get_value(&mut rng), ..TextureAtlasSprite::default() From 0cf1a05fd0599f959db97b14b87b5dc051908b80 Mon Sep 17 00:00:00 2001 From: Charles Bournhonesque Date: Wed, 4 Jan 2023 01:54:06 -0500 Subject: [PATCH 2/5] update comment --- src/components.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components.rs b/src/components.rs index 9083b34..9faf935 100644 --- a/src/components.rs +++ b/src/components.rs @@ -77,7 +77,7 @@ pub struct ParticleSystem { /// If provided, re-scale the texture size /// - /// Note that this the inherent Sprite size, which can still be scaled up with `Transform` + /// This is simply passed directly to [`Sprite::custom_size`] or [`TextureAtlasSprite::custom_size`] pub rescale_texture: Option, /// The number of particles to spawn per second. From 1911d67af49a98c7d1a3e5e3258e98ee7eb86199 Mon Sep 17 00:00:00 2001 From: Charles Bournhonesque Date: Wed, 4 Jan 2023 02:05:27 -0500 Subject: [PATCH 3/5] fix rustdoc --- src/components.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components.rs b/src/components.rs index 9faf935..7b49c7e 100644 --- a/src/components.rs +++ b/src/components.rs @@ -5,7 +5,7 @@ use bevy_ecs::prelude::{Bundle, Component, Entity, ReflectComponent}; use bevy_math::{Vec2, Vec3}; use bevy_reflect::prelude::*; use bevy_render::prelude::{Image, VisibilityBundle}; -use bevy_sprite::TextureAtlas; +use bevy_sprite::{TextureAtlas, Sprite, TextureAtlasSprite}; use bevy_transform::prelude::{GlobalTransform, Transform}; use crate::values::{ColorOverTime, JitteredValue, RandomValue, ValueOverTime}; From 7775e46ff811a684b338578b353fcf111a668390 Mon Sep 17 00:00:00 2001 From: Charles Bournhonesque Date: Wed, 4 Jan 2023 02:13:42 -0500 Subject: [PATCH 4/5] rust fmt .. --- src/components.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components.rs b/src/components.rs index 7b49c7e..2884626 100644 --- a/src/components.rs +++ b/src/components.rs @@ -5,7 +5,7 @@ use bevy_ecs::prelude::{Bundle, Component, Entity, ReflectComponent}; use bevy_math::{Vec2, Vec3}; use bevy_reflect::prelude::*; use bevy_render::prelude::{Image, VisibilityBundle}; -use bevy_sprite::{TextureAtlas, Sprite, TextureAtlasSprite}; +use bevy_sprite::{Sprite, TextureAtlas, TextureAtlasSprite}; use bevy_transform::prelude::{GlobalTransform, Transform}; use crate::values::{ColorOverTime, JitteredValue, RandomValue, ValueOverTime}; From 7e8aee52079078f57c0e8d62fb842a5a6d7052e7 Mon Sep 17 00:00:00 2001 From: Charles Bournhonesque Date: Wed, 4 Jan 2023 02:18:39 -0500 Subject: [PATCH 5/5] clippy + fmt ......... --- src/components.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components.rs b/src/components.rs index 2884626..31a8ac8 100644 --- a/src/components.rs +++ b/src/components.rs @@ -5,7 +5,7 @@ use bevy_ecs::prelude::{Bundle, Component, Entity, ReflectComponent}; use bevy_math::{Vec2, Vec3}; use bevy_reflect::prelude::*; use bevy_render::prelude::{Image, VisibilityBundle}; -use bevy_sprite::{Sprite, TextureAtlas, TextureAtlasSprite}; +use bevy_sprite::TextureAtlas; use bevy_transform::prelude::{GlobalTransform, Transform}; use crate::values::{ColorOverTime, JitteredValue, RandomValue, ValueOverTime}; @@ -77,7 +77,7 @@ pub struct ParticleSystem { /// If provided, re-scale the texture size /// - /// This is simply passed directly to [`Sprite::custom_size`] or [`TextureAtlasSprite::custom_size`] + /// This is simply passed directly to `Sprite::custom_size` or `TextureAtlasSprite::custom_size` pub rescale_texture: Option, /// The number of particles to spawn per second.