diff options
Diffstat (limited to 'in_practice/breakout/particle.h')
-rw-r--r-- | in_practice/breakout/particle.h | 38 |
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 |