+ skeleton_sample_anim( &player.mdl.sk, player.mdl.anim_slide, sa, bpose );
+ skeleton_lerp_pose( &player.mdl.sk, apose, bpose, fslide, apose );
+
+ static float fairdir = 0.0f;
+ fairdir = vg_lerpf( fairdir, -vg_get_axis("horizontal"), 0.04f );
+
+ /* air anim */
+ float air_dir = (fairdir*0.5f+0.5f)*(15.0f/30.0f);
+ skeleton_sample_anim( &player.mdl.sk, player.mdl.anim_air, air_dir, bpose );
+ skeleton_lerp_pose( &player.mdl.sk, apose, bpose, ffly, apose );
+
+ /* push anim */
+ skeleton_sample_anim( &player.mdl.sk, player.reverse > 0.0f?
+ player.mdl.anim_push:
+ player.mdl.anim_push_reverse,
+ player.push_time, bpose );
+ skeleton_lerp_pose( &player.mdl.sk, apose, bpose, fpush, apose );
+
+
+ /* additive effects */
+ apose[player.mdl.id_hip-1].co[0] += offset[0];
+ apose[player.mdl.id_hip-1].co[2] += offset[2];
+ apose[player.mdl.id_ik_hand_l-1].co[0] += offset[0];
+ apose[player.mdl.id_ik_hand_l-1].co[2] += offset[2];
+ apose[player.mdl.id_ik_hand_r-1].co[0] += offset[0];
+ apose[player.mdl.id_ik_hand_r-1].co[2] += offset[2];
+ apose[player.mdl.id_ik_elbow_l-1].co[0] += offset[0];
+ apose[player.mdl.id_ik_elbow_l-1].co[2] += offset[2];
+ apose[player.mdl.id_ik_elbow_r-1].co[0] += offset[0];
+ apose[player.mdl.id_ik_elbow_r-1].co[2] += offset[2];
+
+ skeleton_apply_pose( &player.mdl.sk, apose, k_anim_apply_defer_ik );
+ skeleton_apply_ik_pass( &player.mdl.sk );
+ skeleton_apply_pose( &player.mdl.sk, apose, k_anim_apply_deffered_only );
+
+ v3_copy( player.mdl.sk.final_mtx[player.mdl.id_head-1][3],
+ player.mdl.cam_pos );
+ skeleton_apply_inverses( &player.mdl.sk );
+ skeleton_apply_transform( &player.mdl.sk, player.rb.to_world );
+
+ skeleton_debug( &player.mdl.sk );
+
+#if 0