+ for( int j=0; j<ch->ragdoll_count; j++ )
+ {
+ struct ragdoll_part *pj = &ch->ragdoll[j];
+ struct skeleton_bone *bj = &ch->sk.bones[pj->bone_id];
+
+ if( pj->parent != 0xffffffff )
+ {
+ struct ragdoll_part *pp = &ch->ragdoll[pj->parent];
+ struct skeleton_bone *bp = &ch->sk.bones[pp->bone_id];
+
+ v3f lca, lcb;
+ v3_negate( pj->offset, lca );
+ v3_add( bp->co, pp->offset, lcb );
+ v3_sub( bj->co, lcb, lcb );
+
+ rb_debug_constraint_position( &pj->rb, lca, &pp->rb, lcb );
+
+ if( pj->use_limits )
+ {
+ rb_debug_constraint_limits( &pj->rb, &pp->rb, lca, pj->limits );
+ }
+ }
+
+ v4f plane = {0.0f,1.0f,0.0f,0.0f};
+ rb_effect_simple_bouyency( &pj->rb, plane, k_ragdoll_floatyiness,
+ k_ragdoll_floatydrag );
+ }
+