X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_ragdoll.c;h=d5029dd72865edc08759f826d370587e6a10ac32;hb=509214f72c8974bb30091799752412419dd59632;hp=3dc7ba6e51d8b2e657b84234f386502787d50642;hpb=35b57a341eb37d863ec69e4f011a88b7bfba5c01;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_ragdoll.c b/player_ragdoll.c index 3dc7ba6..d5029dd 100644 --- a/player_ragdoll.c +++ b/player_ragdoll.c @@ -4,7 +4,7 @@ #include "player.h" #include "audio.h" -VG_STATIC void player_ragdoll_init(void) +static void player_ragdoll_init(void) { VG_VAR_F32( k_ragdoll_limit_scale ); VG_VAR_I32( k_ragdoll_div ); @@ -12,7 +12,7 @@ VG_STATIC void player_ragdoll_init(void) VG_VAR_I32( k_ragdoll_debug_constraints ); } -VG_STATIC void player_init_ragdoll_bone_collider( struct skeleton_bone *bone, +static void player_init_ragdoll_bone_collider( struct skeleton_bone *bone, struct ragdoll_part *rp ) { m4x3_identity( rp->collider_mtx ); @@ -82,7 +82,7 @@ VG_STATIC void player_init_ragdoll_bone_collider( struct skeleton_bone *bone, /* * Get parent index in the ragdoll */ -VG_STATIC u32 ragdoll_bone_parent( struct player_ragdoll *rd, +static u32 ragdoll_bone_parent( struct player_ragdoll *rd, struct player_avatar *av, u32 bone_id ) { for( u32 j=0; jpart_count; j++ ) @@ -96,7 +96,7 @@ VG_STATIC u32 ragdoll_bone_parent( struct player_ragdoll *rd, /* * Setup ragdoll colliders */ -VG_STATIC void player_setup_ragdoll_from_avatar( struct player_ragdoll *rd, +static void player_setup_ragdoll_from_avatar( struct player_ragdoll *rd, struct player_avatar *av ) { rd->part_count = 0; @@ -186,7 +186,7 @@ VG_STATIC void player_setup_ragdoll_from_avatar( struct player_ragdoll *rd, /* * Make avatar copy the ragdoll */ -VG_STATIC void copy_ragdoll_pose_to_avatar( struct player_ragdoll *rd, +static void copy_ragdoll_pose_to_avatar( struct player_ragdoll *rd, struct player_avatar *av ) { for( int i=0; ipart_count; i++ ){ @@ -204,7 +204,8 @@ VG_STATIC void copy_ragdoll_pose_to_avatar( struct player_ragdoll *rd, q_m3x3( q_int, mtx ); v3_copy( co_int, mtx[3] ); - m4x3_mul( mtx, part->inv_collider_mtx, av->sk.final_mtx[part->bone_id] ); + m4x3_mul( mtx, part->inv_collider_mtx, + localplayer.final_mtx[part->bone_id] ); } for( u32 i=1; isk.bone_count; i++ ){ @@ -219,17 +220,18 @@ VG_STATIC void copy_ragdoll_pose_to_avatar( struct player_ragdoll *rd, v3_copy( delta, posemtx[3] ); /* final matrix */ - m4x3_mul( av->sk.final_mtx[sb->parent], posemtx, av->sk.final_mtx[i] ); + m4x3_mul( localplayer.final_mtx[sb->parent], posemtx, + localplayer.final_mtx[i] ); } } - skeleton_apply_inverses( &av->sk ); + skeleton_apply_inverses( &av->sk, localplayer.final_mtx ); } /* * Make the ragdoll copy the player model */ -VG_STATIC void copy_avatar_pose_to_ragdoll( struct player_avatar *av, +static void copy_avatar_pose_to_ragdoll( struct player_avatar *av, struct player_ragdoll *rd, v3f velocity ) { @@ -239,12 +241,12 @@ VG_STATIC void copy_avatar_pose_to_ragdoll( struct player_avatar *av, v3f pos, offset; u32 bone = part->bone_id; - m4x3_mulv( av->sk.final_mtx[bone], av->sk.bones[bone].co, pos ); - m3x3_mulv( av->sk.final_mtx[bone], part->collider_mtx[3], offset ); + m4x3_mulv( localplayer.final_mtx[bone], av->sk.bones[bone].co, pos ); + m3x3_mulv( localplayer.final_mtx[bone], part->collider_mtx[3], offset ); v3_add( pos, offset, part->obj.rb.co ); m3x3f r; - m3x3_mul( av->sk.final_mtx[bone], part->collider_mtx, r ); + m3x3_mul( localplayer.final_mtx[bone], part->collider_mtx, r ); m3x3_q( r, part->obj.rb.q ); v3_copy( velocity, part->obj.rb.v ); @@ -260,15 +262,14 @@ VG_STATIC void copy_avatar_pose_to_ragdoll( struct player_avatar *av, /* * Draw rigidbody colliders for ragdoll */ -VG_STATIC void player_debug_ragdoll(void) +static void player_debug_ragdoll(void) { } /* * Ragdoll physics step */ -VG_STATIC void player_ragdoll_iter( struct player_ragdoll *rd ) -{ +static void player_ragdoll_iter( struct player_ragdoll *rd ){ world_instance *world = world_current_instance(); int run_sim = 0;