- static v3f last_vel = { 0.0f, 0.0f, 0.0f };
- static v3f bob, bob1;
-
- v3_sub( player_vel, last_vel, player_accel );
- v3_copy( player_vel, last_vel );
- v3_add( bob, player_accel, bob );
-
- bob[0] = vg_clampf( bob[0], -0.4f, 1.0f );
- bob[1] = vg_clampf( bob[1], -0.4f, 1.3f );
- bob[2] = vg_clampf( bob[2], -0.4f, 1.0f );
-
- v3_lerp( bob, (v3f){ 0.0f, 0.0f, 0.0f }, 0.1f, bob );
- v3_lerp( bob1, bob, 0.1f, bob1 );
-
- /* Feet */
- foot_r[0] = 0.0f;
- foot_r[1] = 0.0f;
- foot_r[2] = 0.3f;
-
- foot_l[0] = 0.0f;
- foot_l[1] = 0.0f;
- foot_l[2] = -0.3f;
-
- /* Head */
- head[0] = (-sinf(slip)*0.9f * kheight + bob1[0]*0.6f) * 0.54f;
- head[1] = cosf(slip)*0.9f * kheight +-bob1[1]*1.4f;
- head[2] = 0.0f;
-
- /* Hips */
- butt[0] = -sinf(slip)*0.2f;
- butt[1] = cosf(slip);
- butt[2] = 0.0f;
- v2_normalize(butt);
- v2_muls( butt, -0.7f, butt );
- v2_add( head, butt, butt );
-
- /* Knees */
- v2_sub( butt, (v2f){0.0f,0.0f}, ac );
- float cl = v2_length( ac ),
- d = acosf( (2.0f * kleg*kleg - cl*cl) / 2.0f * kleg*kleg ),
- x = atan2f( ac[0], ac[1] ),
- ad = (-VG_PIf-d)/2.0f;
-
- v2_muladds( (v2f){0.0f,0.0f},
- (v2f){ sinf( ad+x ), cosf( ad + x ) },
- kleg, knee_l );
- knee_l[2] = -0.3f;
-
- v2_copy( knee_l, knee_r );
- knee_r[2] = 0.3f;
-
- /* shoulders */
- v3_add( (v3f){0.0f,-0.1f,-0.2f}, head, shoulder_r );
-
- /* Hands */
- hand_r[0] = sinf( slip ) * 0.1f;
- hand_r[1] = -cosf( slip*5.0f ) * 0.5f - 0.5f;
- hand_r[2] = -sinf( fabsf(slip) * 2.4f );
- v3_add( shoulder_r, hand_r, hand_r );
-
- m4x3_mulv( player_transform, head, head );
- m4x3_mulv( player_transform, butt, butt );
- m4x3_mulv( player_transform, knee_l, knee_l );
- m4x3_mulv( player_transform, knee_r, knee_r );
- m4x3_mulv( player_transform, foot_l, foot_l );
- m4x3_mulv( player_transform, foot_r, foot_r );
- m4x3_mulv( player_transform, hand_r, hand_r );
- m4x3_mulv( player_transform, shoulder_r, shoulder_r );
-
- v3_copy( head, player_head );
-