#include "player.h"
-static float k_ragdoll_floatyiness = 40.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 )
{
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 ++ )
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;
/*
* 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;
/*
* 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;
/*
* Draw rigidbody colliders for ragdoll
*/
-static void player_debug_ragdoll(void)
+VG_STATIC void player_debug_ragdoll(void)
{
struct player_model *mdl = &player.mdl;
/*
* 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();