4 #include "cgmath/cgmath.h"
12 /* used for stringing fixed masses together */
13 struct rsim_mass *next;
18 struct rsim_mass *mass[2];
22 struct rsim_mass *masses;
24 struct rsim_spring *springs;
27 /* elements of the masses array which are fixed */
28 struct rsim_mass *fixedlist;
30 struct rsim_rope *next;
34 struct rsim_rope *ropes; /* list of ropes to simulate */
36 cgm_vec3 grav, extforce;
39 float udt; /* microstepping delta (valid if > 0) */
40 float udelta_acc; /* dt leftover accumulator for microstepping */
43 int rsim_init(struct rsim_world *rsim);
44 void rsim_destroy(struct rsim_world *rsim);
46 int rsim_add_rope(struct rsim_world *rsim, struct rsim_rope *rope);
48 void rsim_step(struct rsim_world *rsim, float dt);
50 struct rsim_rope *rsim_alloc_rope(int nmasses, int nsprings);
51 void rsim_free_rope(struct rsim_rope *rope);
52 int rsim_init_rope(struct rsim_rope *rope, int nmasses, int nsprings);
53 void rsim_destroy_rope(struct rsim_rope *rope);
55 int rsim_freeze_rope_mass(struct rsim_rope *rope, struct rsim_mass *m);
56 int rsim_unfreeze_rope_mass(struct rsim_rope *rope, struct rsim_mass *m);
58 #endif /* ROPESIM_H_ */