- if( player_xyspeed2() > 0.1f*0.1f ){
- float a = atan2f( localplayer.rb.v[0], localplayer.rb.v[2] );
- q_axis_angle( localplayer.rb.q, (v3f){0.0f,1.0f,0.0f}, a );
+ if( (player_xyspeed2() > 0.1f*0.1f) ){
+ f32 r = 0.3f;
+ if( (w->state.activity == k_walk_activity_ground) ||
+ (w->state.activity == k_walk_activity_ipopoff) ||
+ (w->state.activity == k_walk_activity_oregular) ){
+ r = 0.07f;
+ }
+
+ f32 ta = atan2f( localplayer.rb.v[0], localplayer.rb.v[2] );
+ v4f qt;
+ q_axis_angle( qt, (v3f){0,1,0}, ta );
+ q_nlerp( localplayer.rb.q, qt, vg.time_delta/r, localplayer.rb.q );