X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_ragdoll.c;h=3dc7ba6e51d8b2e657b84234f386502787d50642;hb=eb5b5f5fa7d0b8767df69510b6313cb601df66b4;hp=aabf6f9fe37eefdb1e545b61b93f8777a1654a53;hpb=342fcbf6fda017bdd38d56ce0fa7c9e59e589f3b;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_ragdoll.c b/player_ragdoll.c index aabf6f9..3dc7ba6 100644 --- a/player_ragdoll.c +++ b/player_ragdoll.c @@ -46,7 +46,7 @@ VG_STATIC void player_init_ragdoll_bone_collider( struct skeleton_bone *bone, v3_zero( v1 ); v1[ major_axis ] = 1.0f; - rb_tangent_basis( v1, tx, ty ); + v3_tangent_basis( v1, tx, ty ); float r = (fabsf(v3_dot(tx,v0)) + fabsf(v3_dot(ty,v0))) * 0.25f, l = fabsf(v0[ major_axis ]); @@ -295,12 +295,14 @@ VG_STATIC void player_ragdoll_iter( struct player_ragdoll *rd ) if( rd->parts[i].obj.type == k_rb_shape_capsule ){ l = rb_capsule__scene( rd->parts[i].obj.rb.to_world, &rd->parts[i].obj.inf.capsule, - NULL, &world->rb_geo.inf.scene, buf ); + NULL, &world->rb_geo.inf.scene, buf, + k_material_flag_ghosts ); } else if( rd->parts[i].obj.type == k_rb_shape_box ){ l = rb_box__scene( rd->parts[i].obj.rb.to_world, rd->parts[i].obj.rb.bbx, - NULL, &world->rb_geo.inf.scene, buf ); + NULL, &world->rb_geo.inf.scene, buf, + k_material_flag_ghosts ); } else continue; @@ -346,14 +348,15 @@ VG_STATIC void player_ragdoll_iter( struct player_ragdoll *rd ) } } - for( int j=0; jpart_count; j++ ){ - struct ragdoll_part *pj = &rd->parts[j]; + if( world->water.enabled ){ + for( int j=0; jpart_count; j++ ){ + struct ragdoll_part *pj = &rd->parts[j]; - if( run_sim ){ - v4f plane = {0.0f,1.0f,0.0f,0.0f}; - rb_effect_simple_bouyency( &pj->obj.rb, plane, - k_ragdoll_floatyiness, - k_ragdoll_floatydrag ); + if( run_sim ){ + rb_effect_simple_bouyency( &pj->obj.rb, world->water.plane, + k_ragdoll_floatyiness, + k_ragdoll_floatydrag ); + } } }