+ /* air */
+ skeleton_sample_anim( sk, w->anim_jump, vg.time*0.6f, bpose );
+ skeleton_lerp_pose( sk, apose, bpose, animator->fly, apose );
+
+ mdl_keyframe *kf_board = &apose[localplayer.id_board-1];
+ f32 yaw = animator->board_yaw;
+
+ if( animator->activity == k_walk_activity_ipopoff )
+ if( animator->transition_t > 0.5f )
+ yaw += 1.0f;
+
+ v4f qyaw;
+ q_axis_angle( qyaw, (v3f){0,1,0}, yaw * VG_TAUf * 0.5f );
+ q_mul( kf_board->q, qyaw, kf_board->q );
+ q_normalize( kf_board->q );
+
+ /* sit */
+ if( (animator->activity == k_walk_activity_sit) ||
+ (animator->activity == k_walk_activity_sit_up) ){
+ player_walk_pose_sit( animator, pose );
+ }
+ else if( animator->activity == k_walk_activity_odrop_in ){
+ player_walk_pose_transition(
+ animator, w->anim_drop_in, k_walk_transition_out, apose,
+ NULL, pose );
+ }
+ else if( animator->activity == k_walk_activity_oair ){
+ player_walk_pose_transition(
+ animator, w->anim_jump_to_air, k_walk_transition_out, apose,
+ NULL, pose );
+ }
+ else if( animator->activity == k_walk_activity_oregular ){
+ player_walk_pose_transition(
+ animator, w->anim_intro, k_walk_transition_out, apose,
+ NULL, pose );
+ }
+ else if( animator->activity == k_walk_activity_ipopoff ){
+ if( animator->run > 0.2f ){
+ f32 t = 1.0f-vg_minf( animator->run-0.2f, 1.0f ),
+ mask[ 32 ];
+
+ for( u32 i=0; i<32; i ++ )
+ mask[i] = 1.0f;
+
+ mask[ localplayer.id_ik_foot_l-1 ] = t;
+ mask[ localplayer.id_ik_foot_r-1 ] = t;
+ mask[ localplayer.id_ik_knee_l-1 ] = t;
+ mask[ localplayer.id_ik_knee_r-1 ] = t;
+ mask[ localplayer.id_hip-1 ] = t;
+ player_walk_pose_transition(
+ animator, w->anim_popoff, k_walk_transition_in, apose,
+ mask, pose );
+ }
+ else{
+ player_walk_pose_transition(
+ animator, w->anim_popoff, k_walk_transition_in, apose,
+ NULL, pose );
+ }
+ }
+ else {
+ skeleton_copy_pose( sk, apose, pose->keyframes );
+ }