trail gradient

This commit is contained in:
2025-04-29 20:22:50 +02:00
parent 5cc97da98b
commit 4041175337
2 changed files with 20 additions and 6 deletions

View File

@@ -5,14 +5,19 @@ use crate::GameState;
#[derive(Component)]
pub struct Trail {
points: Vec<Vec3>,
col: LinearRgba,
col_start: LinearRgba,
col_end: LinearRgba,
}
impl Trail {
pub fn new(pos: Vec3, col: LinearRgba) -> Self {
pub fn new(pos: Vec3, col_start: LinearRgba, col_end: LinearRgba) -> Self {
let mut v = Vec::with_capacity(12);
v.push(pos);
Self { points: v, col }
Self {
points: v,
col_start,
col_end,
}
}
pub fn add(&mut self, pos: Vec3) {
@@ -44,7 +49,8 @@ fn update_trail(
continue;
};
for window in trail.points.windows(2) {
let lerp_denom = trail.points.len() as f32;
for (i, window) in trail.points.windows(2).enumerate() {
let [a, b] = window else {
continue;
};
@@ -55,7 +61,11 @@ fn update_trail(
.reparented_to(parent_transform)
.translation;
gizmo.line(a, b, trail.col);
gizmo.line(
a,
b,
trail.col_start.mix(&trail.col_end, i as f32 / lerp_denom),
);
}
}