package demonchime import "core:math" import "core:math/linalg" 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 { renderer.tint = linalg.lerp( tail.color_start, tail.color_end, f32(i)/len(tail.points), ) draw_circle(point, tail.point_rad) } renderer.tint = {1, 1, 1, 1} }