package demonchime import "core:math" import "core:math/linalg" import "fw" Tail :: struct($N: int) { points: [N]Vec2, point_max_dist: f32, point_rad: f32, color_start: Color, color_end: Color, } set_tail_position :: proc(tail: ^Tail($N), pos: Vec2, dt: f32) { tail.points[0] = pos for i in 1.. tail.point_max_dist*tail.point_max_dist { dir := linalg.normalize0(cur^ - prev) cur^ = prev + dir * (tail.point_max_dist - 1) } } } draw_tail :: proc(tail: Tail($N)) { for point, i in tail.points { size := Vec2{tail.point_rad*2, tail.point_rad*2} fw.draw_rect( point - size * 0.5, size, color = linalg.lerp( tail.color_start, tail.color_end, f32(i)/len(tail.points), ), ) } }