libpsys
annotate src/psys_impl.h @ 2:6e5342a2529a
more stuff done
author | John Tsiombikas <nuclear@mutantstargoat.com> |
---|---|
date | Sun, 25 Sep 2011 04:26:51 +0300 |
parents | 874a942853ad |
children |
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@2 | 24 unsigned int tex; |
nuclear@2 | 25 |
nuclear@0 | 26 struct anm_track rate; |
nuclear@0 | 27 struct anm_track life; |
nuclear@0 | 28 struct v3track dir; |
nuclear@0 | 29 struct v3track grav; |
nuclear@0 | 30 |
nuclear@0 | 31 float drag; /* I don't think this needs to animate */ |
nuclear@0 | 32 |
nuclear@0 | 33 /* list of active particles */ |
nuclear@0 | 34 struct psys_particle *plist; |
nuclear@0 | 35 |
nuclear@0 | 36 /* list of collision planes */ |
nuclear@0 | 37 struct col_plane *planes; |
nuclear@0 | 38 |
nuclear@0 | 39 /* custom spawn closure */ |
nuclear@0 | 40 void *spawn_cls; |
nuclear@0 | 41 psys_spawn_func_t spawn; |
nuclear@0 | 42 |
nuclear@0 | 43 /* custom particle update closure */ |
nuclear@0 | 44 void *upd_cls; |
nuclear@0 | 45 psys_update_func_t update; |
nuclear@0 | 46 |
nuclear@0 | 47 /* custom draw closure */ |
nuclear@0 | 48 void *draw_cls; |
nuclear@0 | 49 psys_draw_func_t draw; |
nuclear@0 | 50 psys_draw_start_func_t draw_start; |
nuclear@0 | 51 psys_draw_end_func_t draw_end; |
nuclear@0 | 52 |
nuclear@0 | 53 /* calculated on update */ |
nuclear@0 | 54 vec3_t cur_pos; |
nuclear@1 | 55 quat_t cur_rot; |
nuclear@0 | 56 float cur_rate, cur_life; |
nuclear@0 | 57 vec3_t cur_dir; |
nuclear@1 | 58 vec3_t cur_grav; |
nuclear@2 | 59 |
nuclear@2 | 60 /* partial spawn accumulator */ |
nuclear@2 | 61 float spawn_acc; |
nuclear@0 | 62 }; |
nuclear@0 | 63 |
nuclear@0 | 64 |
nuclear@0 | 65 struct psys_particle { |
nuclear@0 | 66 vec3_t pos, vel; |
nuclear@1 | 67 float life, size; |
nuclear@1 | 68 |
nuclear@1 | 69 struct psys_particle *next; |
nuclear@0 | 70 }; |
nuclear@0 | 71 |
nuclear@0 | 72 void psys_gl_draw_start(struct psys_emitter *em, void *cls); |
nuclear@0 | 73 void psys_gl_draw(struct psys_emitter *em, struct psys_particle *p, void *cls); |
nuclear@0 | 74 void psys_gl_draw_end(struct psys_emitter *em, void *cls); |
nuclear@0 | 75 |
nuclear@0 | 76 #endif /* PSYS_IMPL_H_ */ |