X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=tools%2Fropesim%2Fsrc%2Fropesim.h;h=666e68b09b68b5598e95ec4be4fa196214d263ea;hp=f75e71b7cf98a8e24519b9b49cf40d00e67f2155;hb=900d333da3db0d117e815dc181b5d73c31efa455;hpb=c4e738daa32d1949f2d5c6fc62237760fb8aac68 diff --git a/tools/ropesim/src/ropesim.h b/tools/ropesim/src/ropesim.h index f75e71b..666e68b 100644 --- a/tools/ropesim/src/ropesim.h +++ b/tools/ropesim/src/ropesim.h @@ -6,6 +6,7 @@ struct rsim_mass { cgm_vec3 p; cgm_vec3 v; + cgm_vec3 f; float m; int fixed; @@ -15,17 +16,12 @@ struct rsim_mass { struct rsim_spring { float rest_len, k; - struct rsim_mass *mass[2]; }; struct rsim_rope { struct rsim_mass *masses; int num_masses; - struct rsim_spring *springs; - int num_springs; - - /* elements of the masses array which are fixed */ - struct rsim_mass *fixedlist; + struct rsim_spring *springs; /* adjacency matrix */ struct rsim_rope *next; }; @@ -47,11 +43,15 @@ int rsim_add_rope(struct rsim_world *rsim, struct rsim_rope *rope); void rsim_step(struct rsim_world *rsim, float dt); -struct rsim_rope *rsim_alloc_rope(int nmasses, int nsprings); +struct rsim_rope *rsim_alloc_rope(int nmasses); void rsim_free_rope(struct rsim_rope *rope); -int rsim_init_rope(struct rsim_rope *rope, int nmasses, int nsprings); +int rsim_init_rope(struct rsim_rope *rope, int nmasses); void rsim_destroy_rope(struct rsim_rope *rope); +#define RSIM_RLEN_DEFAULT (-1.0f) +int rsim_set_rope_spring(struct rsim_rope *rope, int ma, int mb, float k, float rlen); +int rsim_have_spring(struct rsim_rope *rope, int ma, int mb); + int rsim_freeze_rope_mass(struct rsim_rope *rope, struct rsim_mass *m); int rsim_unfreeze_rope_mass(struct rsim_rope *rope, struct rsim_mass *m);