rev |
line source |
nuclear@0
|
1 #ifndef LIBPSYS_H_
|
nuclear@0
|
2 #define LIBPSYS_H_
|
nuclear@0
|
3
|
nuclear@0
|
4 struct psys_emitter;
|
nuclear@0
|
5 struct psys_particle;
|
nuclear@0
|
6
|
nuclear@0
|
7 typedef int (*psys_spawn_func_t)(struct psys_emitter*, struct psys_particle*, void*);
|
nuclear@0
|
8 typedef void (*psys_update_func_t)(struct psys_emitter*, struct psys_particle*, float, float, void*);
|
nuclear@0
|
9
|
nuclear@0
|
10 typedef void (*psys_draw_func_t)(struct psys_emitter*, struct psys_particle*, void*);
|
nuclear@0
|
11 typedef void (*psys_draw_start_func_t)(struct psys_emitter*, void*);
|
nuclear@0
|
12 typedef void (*psys_draw_end_func_t)(struct psys_emitter*, void*);
|
nuclear@0
|
13
|
nuclear@0
|
14
|
nuclear@0
|
15 struct psys_emitter *psys_create(void);
|
nuclear@0
|
16 void psys_free(struct psys_emitter *em);
|
nuclear@0
|
17
|
nuclear@0
|
18 int psys_init(struct psys_emitter *em);
|
nuclear@0
|
19 void psys_destroy(struct psys_emitter *em);
|
nuclear@0
|
20
|
nuclear@0
|
21 /* set properties */
|
nuclear@2
|
22 void psys_set_texture(struct psys_emitter *em, unsigned int tex);
|
nuclear@0
|
23
|
nuclear@0
|
24 void psys_set_pos(struct psys_emitter *em, vec3_t pos, float tm);
|
nuclear@0
|
25 void psys_set_rot(struct psys_emitter *em, quat_t rot, float tm);
|
nuclear@0
|
26 void psys_set_pivot(struct psys_emitter *em, vec3_t pivot);
|
nuclear@0
|
27
|
nuclear@0
|
28 void psys_set_rate(struct psys_emitter *em, float rate, float tm);
|
nuclear@1
|
29 void psys_set_life(struct psys_emitter *em, float life, float tm);
|
nuclear@0
|
30 void psys_set_dir(struct psys_emitter *em, vec3_t dir, float tm);
|
nuclear@1
|
31 void psys_set_grav(struct psys_emitter *em, vec3_t grav, float tm);
|
nuclear@0
|
32
|
nuclear@0
|
33 void psys_clear_collision_planes(struct psys_emitter *em);
|
nuclear@0
|
34 int psys_add_collision_plane(struct psys_emitter *em, plane_t plane, float elast);
|
nuclear@0
|
35
|
nuclear@0
|
36 void psys_add_particle(struct psys_emitter *em, struct psys_particle *p);
|
nuclear@0
|
37
|
nuclear@0
|
38 void psys_spawn_func(struct psys_emitter *em, psys_spawn_func_t func, void *cls);
|
nuclear@0
|
39 void psys_update_func(struct psys_emitter *em, psys_update_func_t func, void *cls);
|
nuclear@0
|
40 void psys_draw_func(struct psys_emitter *em, psys_draw_func_t draw,
|
nuclear@0
|
41 psys_draw_start_func_t start, psys_draw_end_func_t end, void *cls);
|
nuclear@0
|
42
|
nuclear@0
|
43
|
nuclear@0
|
44 /* query emitter state */
|
nuclear@2
|
45 unsigned int psys_get_texture(struct psys_emitter *em);
|
nuclear@0
|
46 vec3_t psys_get_pos(struct psys_emitter *em);
|
nuclear@0
|
47 quat_t psys_get_rot(struct psys_emitter *em);
|
nuclear@0
|
48 float psys_get_rate(struct psys_emitter *em);
|
nuclear@0
|
49 float psys_get_life(struct psys_emitter *em);
|
nuclear@0
|
50 vec3_t psys_get_dir(struct psys_emitter *em);
|
nuclear@1
|
51 vec3_t psys_get_grav(struct psys_emitter *em);
|
nuclear@0
|
52
|
nuclear@0
|
53 /* update and render */
|
nuclear@0
|
54
|
nuclear@0
|
55 void psys_update(struct psys_emitter *em, float tm);
|
nuclear@0
|
56 void psys_draw(struct psys_emitter *em);
|
nuclear@0
|
57
|
nuclear@0
|
58 #endif /* LIBPSYS_H_ */
|