libpsys
annotate src/psys_impl.h @ 1:874a942853ad
foobar
author | John Tsiombikas <nuclear@mutantstargoat.com> |
---|---|
date | Sat, 24 Sep 2011 20:44:42 +0300 |
parents | 1c8eb90a6989 |
children | 6e5342a2529a |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef PSYS_IMPL_H_ |
nuclear@0 | 2 #define PSYS_IMPL_H_ |
nuclear@0 | 3 |
nuclear@0 | 4 #include <anim/anim.h> |
nuclear@0 | 5 #include "psys.h" |
nuclear@0 | 6 |
nuclear@0 | 7 struct v3track { |
nuclear@0 | 8 struct anm_track x, y, z; |
nuclear@0 | 9 }; |
nuclear@0 | 10 |
nuclear@0 | 11 struct col_plane { |
nuclear@0 | 12 plane_t p; |
nuclear@0 | 13 float elasticity; |
nuclear@0 | 14 struct col_plane *next; |
nuclear@0 | 15 }; |
nuclear@0 | 16 |
nuclear@0 | 17 struct psys_particle; |
nuclear@0 | 18 |
nuclear@0 | 19 struct psys_emitter { |
nuclear@0 | 20 float last_update; |
nuclear@0 | 21 |
nuclear@0 | 22 struct anm_node prs; |
nuclear@0 | 23 |
nuclear@0 | 24 struct anm_track rate; |
nuclear@0 | 25 struct anm_track life; |
nuclear@0 | 26 struct v3track dir; |
nuclear@0 | 27 struct v3track grav; |
nuclear@0 | 28 |
nuclear@0 | 29 float drag; /* I don't think this needs to animate */ |
nuclear@0 | 30 |
nuclear@0 | 31 /* list of active particles */ |
nuclear@0 | 32 struct psys_particle *plist; |
nuclear@0 | 33 |
nuclear@0 | 34 /* list of collision planes */ |
nuclear@0 | 35 struct col_plane *planes; |
nuclear@0 | 36 |
nuclear@0 | 37 /* custom spawn closure */ |
nuclear@0 | 38 void *spawn_cls; |
nuclear@0 | 39 psys_spawn_func_t spawn; |
nuclear@0 | 40 |
nuclear@0 | 41 /* custom particle update closure */ |
nuclear@0 | 42 void *upd_cls; |
nuclear@0 | 43 psys_update_func_t update; |
nuclear@0 | 44 |
nuclear@0 | 45 /* custom draw closure */ |
nuclear@0 | 46 void *draw_cls; |
nuclear@0 | 47 psys_draw_func_t draw; |
nuclear@0 | 48 psys_draw_start_func_t draw_start; |
nuclear@0 | 49 psys_draw_end_func_t draw_end; |
nuclear@0 | 50 |
nuclear@0 | 51 /* calculated on update */ |
nuclear@0 | 52 vec3_t cur_pos; |
nuclear@1 | 53 quat_t cur_rot; |
nuclear@0 | 54 float cur_rate, cur_life; |
nuclear@0 | 55 vec3_t cur_dir; |
nuclear@1 | 56 vec3_t cur_grav; |
nuclear@0 | 57 }; |
nuclear@0 | 58 |
nuclear@0 | 59 |
nuclear@0 | 60 struct psys_particle { |
nuclear@0 | 61 vec3_t pos, vel; |
nuclear@1 | 62 float life, size; |
nuclear@1 | 63 |
nuclear@1 | 64 struct psys_particle *next; |
nuclear@0 | 65 }; |
nuclear@0 | 66 |
nuclear@0 | 67 void psys_gl_draw_start(struct psys_emitter *em, void *cls); |
nuclear@0 | 68 void psys_gl_draw(struct psys_emitter *em, struct psys_particle *p, void *cls); |
nuclear@0 | 69 void psys_gl_draw_end(struct psys_emitter *em, void *cls); |
nuclear@0 | 70 |
nuclear@0 | 71 #endif /* PSYS_IMPL_H_ */ |