+
+ mdl_keyframe *kf_board = &dest->pose[av->id_board-1],
+ *kf_foot_l = &dest->pose[av->id_ik_foot_l-1],
+ *kf_foot_r = &dest->pose[av->id_ik_foot_r-1],
+ *kf_knee_l = &dest->pose[av->id_ik_knee_l-1],
+ *kf_knee_r = &dest->pose[av->id_ik_knee_r-1],
+ *kf_hip = &dest->pose[av->id_hip-1],
+ *kf_wheels[] = { &dest->pose[av->id_wheel_r-1],
+ &dest->pose[av->id_wheel_l-1] };
+
+
+ mdl_keyframe grind_pose[32];
+ {
+ float grind_frame = 0.5f;
+
+ if( s->state.activity == k_skate_activity_grind_front50 ){
+ grind_frame = 0.0f;
+ } else if( s->state.activity == k_skate_activity_grind_back50 ){
+ grind_frame = 1.0f;
+ }
+
+ float grind=s->state.activity >= k_skate_activity_grind_any? 1.0f: 0.0f;
+ state->blend_grind =
+ vg_lerpf( state->blend_grind, grind, 5.0f*vg.time_delta );
+ state->blend_grind_balance =
+ vg_lerpf( state->blend_grind_balance,
+ grind_frame, 5.0f*vg.time_delta );
+
+ grind_frame = state->blend_grind_balance * (15.0f/30.0f);
+
+ skeleton_sample_anim( sk, s->anim_grind, grind_frame, apose );
+ skeleton_sample_anim( sk, s->anim_grind_jump, grind_frame, bpose );
+ skeleton_lerp_pose( sk, apose, bpose, state->blend_jump, grind_pose );
+ }
+ skeleton_lerp_pose( sk, dest->pose, grind_pose,
+ state->blend_grind, dest->pose );
+
+ float add_grab_mod = 1.0f - state->blend_fly;