- v3f local_cog;
- m4x3_mulv( player->rb.to_local, s->state.cog, local_cog );
-
- stand_blend = vg_clampf( 1.0f-local_cog[1], 0, 1 );
-
- skeleton_sample_anim( sk, s->anim_stand, dir_frame, apose );
- skeleton_sample_anim( sk, s->anim_highg, dir_frame, bpose );
- skeleton_lerp_pose( sk, apose, bpose, stand_blend, apose );
-
- /* sliding */
- float slide_frame = s->blend_x * (15.0f/30.0f);
- skeleton_sample_anim( sk, s->anim_slide, slide_frame, bpose );
- skeleton_lerp_pose( sk, apose, bpose, s->blend_slide, apose );
-
- /* pushing */
- double push_time = vg.time - s->state.start_push;
- s->blend_push = vg_lerpf( s->blend_push,
- (vg.time - s->state.cur_push) < 0.125,
- 6.0f*vg.time_delta );
-
- float pt = push_time + vg.accumulator;
- if( s->state.reverse > 0.0f )
- skeleton_sample_anim( sk, s->anim_push, pt, bpose );
- else
- skeleton_sample_anim( sk, s->anim_push_reverse, pt, bpose );
-
- skeleton_lerp_pose( sk, apose, bpose, s->blend_push, apose );
-
- /* trick setup */
- float jump_start_frame = 14.0f/30.0f;
-
- float charge = s->state.jump_charge;
- s->blend_jump = vg_lerpf( s->blend_jump, charge, 8.4f*vg.time_delta );
-
- float setup_frame = charge * jump_start_frame,
- setup_blend = vg_minf( s->blend_jump, 1.0f );
-
- float jump_frame = (vg.time - s->state.jump_time) + jump_start_frame;
- if( jump_frame >= jump_start_frame && jump_frame <= (40.0f/30.0f) )
- setup_frame = jump_frame;
-
- struct skeleton_anim *jump_anim = s->state.jump_dir?
- s->anim_ollie:
- s->anim_ollie_reverse;
-
- skeleton_sample_anim_clamped( sk, jump_anim, setup_frame, bpose );
- skeleton_lerp_pose( sk, apose, bpose, setup_blend, ground_pose );