@@ 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