; SPDX-FileCopyrightText: 2023 Jummit
;
; SPDX-License-Identifier: GPL-3.0-or-later
(fn update-particles [world]
(each [_ entity (ipairs world)]
(case entity
{: particles}
(each [_ particle (ipairs particles)]
(case particle
{: x : y : dir : angle : torque}
(do
(set particle.x (+ x (. dir 1)))
(set particle.y (+ y (. dir 2)))
(set particle.dir
[(* (math.sin angle) 0.5) (* (math.cos angle) 0.5)])
(set particle.angle (+ angle torque))))))))
(fn draw-particles [world]
(each [_ entity (ipairs world)]
(case entity
{: particles : x : y}
(each [_ particle (ipairs particles)]
(case particle {:x px :y py}
(_G.spr 272 (+ x px) (+ y py) 0))))))
{: update-particles : draw-particles}