summaryrefslogtreecommitdiff
path: root/in_practice/breakout/particle.h
diff options
context:
space:
mode:
Diffstat (limited to 'in_practice/breakout/particle.h')
-rw-r--r--in_practice/breakout/particle.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/in_practice/breakout/particle.h b/in_practice/breakout/particle.h
new file mode 100644
index 0000000..3e5d9a6
--- /dev/null
+++ b/in_practice/breakout/particle.h
@@ -0,0 +1,38 @@
+#ifndef PARTICLE_H
+#define PARTICLE_H
+
+#include "my_math.h"
+#include "object.h"
+
+struct particle {
+ v2 pos;
+ v2 vel;
+ v4 color;
+ f32 life;
+};
+
+#define default_particle { \
+ .pos = {0.0f, 0.0f}, \
+ .vel = {0.0f, 0.0f}, \
+ .color = {1.0f, 1.0f, 1.0f, 1.0f}, \
+ .life = 0.0f \
+}
+
+#define MAX_PARTICLES 500
+
+struct particle_generator {
+ struct particle particles[MAX_PARTICLES];
+ i32 new;
+ u32 shader;
+ u32 texture;
+ u32 vao;
+};
+
+void respawn_particle(struct particle *particle, struct object object, v2 offset);
+i32 find_unused_particle(struct particle_generator generator);
+struct particle_generator init_generator(i32 new, u32 shader, u32 texture);
+void update_particles(struct particle_generator *generator, struct object object, f32 dt, v2 offset);
+void render_particles(struct particle_generator generator);
+void reset_particles(struct particle_generator *generator);
+
+#endif