+ rb_extrapolate_transform( &player.phys.rb, player.visual_transform );
+
+ v4f qfake_rot;
+ m3x3f fake_rot;
+ float substep = vg_clampf( vg.accumulator / VG_TIMESTEP_FIXED, 0.0f, 1.0f );
+ q_axis_angle( qfake_rot, phys->rb.up, phys->siY*substep );
+ q_m3x3( qfake_rot, fake_rot );
+ m3x3_mul( fake_rot, player.visual_transform, player.visual_transform );
+
+ m4x3_invert_affine( player.visual_transform, player.inv_visual_transform );