+ v4f qflip;
+ if( (s->state.activity == k_skate_activity_air) &&
+ (fabsf(s->state.flip_rate) > 0.01f) )
+ {
+ float angle = vg_clampf( s->state.flip_time, -1.0f, 1.0f ) * VG_TAUf,
+ distm = s->land_dist * fabsf(s->state.flip_rate) * 3.0f,
+ blend = vg_clampf( 1.0f-distm, 0.0f, 1.0f );
+
+ angle = vg_lerpf( angle, vg_signf(s->state.flip_rate) * VG_TAUf, blend );
+
+ q_axis_angle( qflip, s->state.flip_axis, angle );
+ q_mul( qflip, dev->pose_root_q, dev->pose_root_q );
+ q_normalize( dev->pose_root_q );
+
+ v3f rotation_point, rco;
+ v3_muladds( player->rb.co, player->rb.to_world[1], 0.5f, rotation_point );
+ v3_sub( dev->pose_root_co, rotation_point, rco );
+
+ /* FIXME: q_mul v3 */
+ m3x3f TEMP;
+ q_m3x3( qflip, TEMP );
+ m3x3_mulv( TEMP, rco, rco );
+ v3_add( rco, rotation_point, dev->pose_root_co );
+ }
+