Very simple particle system.

This commit is contained in:
2026-09-28 08:04:09 +02:00
parent 3691f33654
commit 23301801e7
+40
View File
@@ -0,0 +1,40 @@
package game
import rl "vendor:raylib"
Particle :: struct {
pos: rl.Vector2,
vel: rl.Vector2,
color: rl.Color,
life: f32,
max_life: f32,
size: f32
}
update_particles :: proc(particles: ^[dynamic]Particle, dt: f32) {
#reverse for &p, i in particles {
p.life -= dt
if p.life <= 0 {
unordered_remove(particles, i)
continue
}
// update live particles
p.pos += p.vel * dt
// times the velocitt so we can slow it down over time
p.vel *= 0.92
}
}
render_particles :: proc(particles: [dynamic]Particle) {
rl.BeginBlendMode(.ADDITIVE)
for p in particles {
alpha := u8(255 * (p.life / p.max_life))
col := rl.Color{p.color.r, p.color.g, p.color.b, alpha}
rl.DrawRectangleV(p.pos, {p.size, p.size}, col)
}
rl.EndBlendMode()
}