libpsys

view src/psys.h @ 0:1c8eb90a6989

initial commit
author John Tsiombikas <nuclear@mutantstargoat.com>
date Sat, 24 Sep 2011 07:22:07 +0300
parents
children 874a942853ad
line source
1 #ifndef LIBPSYS_H_
2 #define LIBPSYS_H_
4 /* emitter properties:
5 * - p/r/s (anim)
6 * - spawn rate (anim)
7 * - direction (anim)
8 *
9 * - collision planes
10 */
12 struct psys_emitter;
13 struct psys_particle;
15 typedef int (*psys_spawn_func_t)(struct psys_emitter*, struct psys_particle*, void*);
16 typedef void (*psys_update_func_t)(struct psys_emitter*, struct psys_particle*, float, float, void*);
18 typedef void (*psys_draw_func_t)(struct psys_emitter*, struct psys_particle*, void*);
19 typedef void (*psys_draw_start_func_t)(struct psys_emitter*, void*);
20 typedef void (*psys_draw_end_func_t)(struct psys_emitter*, void*);
23 struct psys_emitter *psys_create(void);
24 void psys_free(struct psys_emitter *em);
26 int psys_init(struct psys_emitter *em);
27 void psys_destroy(struct psys_emitter *em);
29 /* set properties */
31 void psys_set_pos(struct psys_emitter *em, vec3_t pos, float tm);
32 void psys_set_rot(struct psys_emitter *em, quat_t rot, float tm);
33 void psys_set_pivot(struct psys_emitter *em, vec3_t pivot);
35 void psys_set_rate(struct psys_emitter *em, float rate, float tm);
36 void psys_set_dir(struct psys_emitter *em, vec3_t dir, float tm);
38 void psys_clear_collision_planes(struct psys_emitter *em);
39 int psys_add_collision_plane(struct psys_emitter *em, plane_t plane, float elast);
41 void psys_add_particle(struct psys_emitter *em, struct psys_particle *p);
43 void psys_spawn_func(struct psys_emitter *em, psys_spawn_func_t func, void *cls);
44 void psys_update_func(struct psys_emitter *em, psys_update_func_t func, void *cls);
45 void psys_draw_func(struct psys_emitter *em, psys_draw_func_t draw,
46 psys_draw_start_func_t start, psys_draw_end_func_t end, void *cls);
49 /* query emitter state */
50 vec3_t psys_get_pos(struct psys_emitter *em);
51 quat_t psys_get_rot(struct psys_emitter *em);
52 float psys_get_rate(struct psys_emitter *em);
53 float psys_get_life(struct psys_emitter *em);
54 vec3_t psys_get_dir(struct psys_emitter *em);
56 /* update and render */
58 void psys_update(struct psys_emitter *em, float tm);
59 void psys_draw(struct psys_emitter *em);
61 #endif /* LIBPSYS_H_ */