X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_skate.c;h=a796b7c67ee721c2ecfdb528f4bddf78691480f3;hb=67928190c66b05bd48b6b515278e930974d25cd2;hp=ef13865546431cb5d2af4047c698bff0b0555bdf;hpb=1e62339d8fb24596eed19b75bde2ef452bd37938;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_skate.c b/player_skate.c index ef13865..a796b7c 100644 --- a/player_skate.c +++ b/player_skate.c @@ -2760,9 +2760,29 @@ VG_STATIC void player__skate_animate( player_instance *player, float dir_frame = s->blend_z * (15.0f/30.0f), stand_blend = offset[1]*-2.0f; + v2f steer; + joystick_state( k_srjoystick_steer, steer ); + f32 lean1, + lean2 = steer[0] * s->state.reverse * -0.36f, + lean; + + if( fabsf(s->state.slip) > 0.3f ){ + f32 slide_dir = vg_signf(v3_dot(player->rb.v,player->rb.to_world[0])); + s->state.delayed_slip_dir = slide_dir; + } + lean1 = s->blend_slide * s->state.delayed_slip_dir; + + if( fabsf(lean1)>fabsf(lean2) ) lean = lean1; + else lean = lean2; + + if( ((int)roundf(s->state.trick_euler[0])) % 2 ) lean = -lean; + lean = vg_clampf( lean, -1.0f, 1.0f ); + + player->board_pose.lean = vg_lerpf( player->board_pose.lean, lean, + vg.time_delta * 18.0f ); + 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 ); @@ -2977,7 +2997,6 @@ VG_STATIC void player__skate_animate( player_instance *player, q_mul( qtotal, kf_board->q, kf_board->q ); - /* trick rotation */ v4f qtrick, qyaw, qpitch, qroll; v3f euler;