~starkingdoms/starkingdoms

f678a8993d45425a5140750a4393672ccf4c8b2c — core 5 months ago 25992c7
chore: newtype linearsplines for particle system
1 files changed, 20 insertions(+), 3 deletions(-)

M crates/unified/src/particles.rs
M crates/unified/src/particles.rs => crates/unified/src/particles.rs +20 -3
@@ 1,8 1,9 @@
use bevy::color::{Color, ColorCurve, LinearRgba};
use bevy::math::cubic_splines::LinearSpline;
use bevy::math::Vec2;
use bevy::math::{Vec2, VectorSpace};
use rand::Rng;
use serde::{Deserialize, Serialize};
use serde::de::DeserializeOwned;

#[derive(Deserialize, Serialize)]
pub struct ParticleEffect {


@@ 25,15 26,31 @@ pub struct ParticleEffect {
    // -- scale -- //

    // Scale curve over the lifetime of the particle
    //pub scale: LinearSpline<f32>,
    pub scale: ScaleSpline,

    // -- color -- //

    // Color curve over the lifetime of the particle
    //pub color: LinearSpline<LinearRgba>,
    pub color: ColorSpline,
}

#[derive(Deserialize, Serialize)]
pub struct ScaleSpline(Vec<f32>);
impl From<ScaleSpline> for LinearSpline<f32> {
    fn from(value: ScaleSpline) -> Self {
        Self::new(&value.0)
    }
}
#[derive(Deserialize, Serialize)]
pub struct ColorSpline(Vec<LinearRgba>);
impl From<ColorSpline> for LinearSpline<LinearRgba> {
    fn from(value: ColorSpline) -> Self {
        Self::new(&value.0)
    }
}


#[derive(Deserialize, Serialize)]
pub struct RandF32 {
    pub value: f32,
    pub randomness: f32