rename to molten metal
[metatoy] / src / metaobj.h
1 #ifndef METAOBJ_H_
2 #define METAOBJ_H_
3
4 enum {
5         MOBJ_IDLE,
6         MOBJ_GRABING,
7         MOBJ_HELD,
8         MOBJ_DROPPING
9 };
10
11 struct mball {
12         float energy;
13         cgm_vec3 pos;
14 };
15
16 struct mcapsule {
17         float energy;
18         cgm_vec3 end[2];
19         float len;
20 };
21
22 struct mobject {
23         cgm_vec3 pos, mouse;
24         int state;
25         struct mball *balls;
26         struct mcapsule *caps;
27         int num_balls, num_caps;
28         cgm_vec3 *idlepos;
29         cgm_vec4 *mot;
30         float tstart;
31         float xform[16];
32
33         void (*swstate)(struct mobject *mobj, int newst);
34         void (*update)(struct mobject *mobj, float tsec);
35         void (*upd_ball)(struct mobject *mobj, struct mball *ball, float tsec, float t);
36         void (*upd_caps)(struct mobject *mobj, struct mcapsule *caps, float tsec, float t);
37         float (*eval)(struct mobject *mobj, cgm_vec3 *pos);
38 };
39
40 struct mobject *metaobj_sflake(void);
41 struct mobject *metaobj_sgi(void);
42
43 #endif  /* METAOBJ_H_ */