well yeah i guess
[carveJwlIkooP6JGAAIwe30JlM.git] / player_ragdoll.h
index 28776c3d683e487a4410541235315208e168f5b9..6193bf73e4f8bd4ca59fed263d1c6654fa05d670 100644 (file)
@@ -3,15 +3,16 @@
 
 #include "player.h"
 
-static float k_ragdoll_floatyiness = 20.0f,
+VG_STATIC float k_ragdoll_floatyiness = 20.0f,
              k_ragdoll_floatydrag  = 1.0f;
 
 /*
  * Setup ragdoll colliders 
  */
-static void player_init_ragdoll( mdl_header *src )
+VG_STATIC void player_init_ragdoll(void)
 {
    struct player_model *mdl = &player.mdl;
+   mdl_context *src = &mdl->meta;
 
    if( !mdl->sk.collider_count )
    {
@@ -19,7 +20,6 @@ static void player_init_ragdoll( mdl_header *src )
       return;
    }
 
-   mdl->ragdoll = vg_alloc(sizeof(struct ragdoll_part)*mdl->sk.collider_count);
    mdl->ragdoll_count = 0;
 
    for( u32 i=0; i<mdl->sk.bone_count; i ++ )
@@ -28,6 +28,9 @@ static void player_init_ragdoll( mdl_header *src )
       
       if( bone->collider )
       {
+         if( mdl->ragdoll_count > vg_list_size(player.mdl.ragdoll) )
+            vg_fatal_exit_loop( "Playermodel has too many colliders" );
+
          struct ragdoll_part *rp = &mdl->ragdoll[ mdl->ragdoll_count ++ ];
          rp->bone_id = i;
          
@@ -73,7 +76,7 @@ static void player_init_ragdoll( mdl_header *src )
 /*
  * Make the player model copy the ragdoll
  */
-static void player_model_copy_ragdoll(void)
+VG_STATIC void player_model_copy_ragdoll(void)
 {
    struct player_model *mdl = &player.mdl;
 
@@ -92,7 +95,7 @@ static void player_model_copy_ragdoll(void)
 /*
  * Make the ragdoll copy the player model
  */
-static void player_ragdoll_copy_model( v3f v )
+VG_STATIC void player_ragdoll_copy_model( v3f v )
 {
    struct player_model *mdl = &player.mdl;
 
@@ -117,7 +120,7 @@ static void player_ragdoll_copy_model( v3f v )
 /*
  * Draw rigidbody colliders for ragdoll
  */
-static void player_debug_ragdoll(void)
+VG_STATIC void player_debug_ragdoll(void)
 {
    struct player_model *mdl = &player.mdl;
 
@@ -128,7 +131,7 @@ static void player_debug_ragdoll(void)
 /*
  * Ragdoll physics step
  */
-static void player_ragdoll_iter(void)
+VG_STATIC void player_ragdoll_iter(void)
 {
    struct player_model *mdl = &player.mdl;
    rb_solver_reset();