ring_add :: (using r : *ring, next: Vector2) { data[start] = next; start += 1; start %= data.count; } ring_avg :: (using r : *ring) -> Vector2 { sum : Vector2; for data { sum += it; } return sum / cast(float) data.count; } ring_reset :: (using r : *ring) { memset(data.data, 0, data.count * size_of(Vector2)); } new_ring :: (num_items: s64 = 5) -> ring { r : ring; r.data = NewArray(num_items, Vector2); return r; } ring :: struct { start : s64; data : []Vector2; } #import "Math"; #import "Basic";