X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_walk.c;h=87c2246fe6960a662852f3210d95abfc8e1c062d;hb=c52dacb7bc07e300312e45d605d206222dcbb181;hp=2c038431e175825427749f2f37f56c5acf0f56c8;hpb=09fc72b08113fa157a3abb2ded6086babedd10cf;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_walk.c b/player_walk.c index 2c03843..87c2246 100644 --- a/player_walk.c +++ b/player_walk.c @@ -660,12 +660,12 @@ VG_STATIC void player__walk_post_update( player_instance *player ){ int walk_phase = 0; - if( vg_fractf(w->walk_timer) > 0.5f ) + if( vg_fractf(w->state.walk_timer) > 0.5f ) walk_phase = 1; else walk_phase = 0; - if( (w->step_phase != walk_phase) && + if( (w->state.step_phase != walk_phase) && (w->state.activity == k_walk_activity_ground ) ) { audio_lock(); @@ -692,7 +692,7 @@ VG_STATIC void player__walk_post_update( player_instance *player ){ audio_unlock(); } - w->step_phase = walk_phase; + w->state.step_phase = walk_phase; } VG_STATIC void player__walk_animate( player_instance *player ){ @@ -720,11 +720,11 @@ VG_STATIC void player__walk_animate( player_instance *player ){ run_norm = 30.0f/(float)w->anim_run->length, walk_adv = vg_lerpf( walk_norm, run_norm, w->move_speed ); - w->walk_timer += walk_adv * vg.time_delta; - } - else{ - w->walk_timer = 0.0f; + w->state.walk_timer += walk_adv * vg.time_delta; } + else + w->state.walk_timer = 0.0f; + animator->walk_timer = w->state.walk_timer; if( !player->immobile ) rb_extrapolate( &player->rb, animator->root_co, animator->root_q ); @@ -787,19 +787,20 @@ VG_STATIC void player__walk_animate( player_instance *player ){ q_normalize( animator->root_q ); } -VG_STATIC void player__walk_pose( player_instance *player ){ +VG_STATIC void player__walk_pose( player_instance *player, player_pose *pose ){ struct player_walk *w = &player->_walk; struct player_walk_animator *animator = &w->animator; struct skeleton *sk = &player->playeravatar->sk; struct player_avatar *av = player->playeravatar; - player_pose *pose = &player->pose; v3_copy( animator->root_co, pose->root_co ); v4_copy( animator->root_q, pose->root_q ); + pose->board.lean = 0.0f; + pose->type = k_player_pose_type_ik; float walk_norm = (float)w->anim_walk->length/30.0f, run_norm = (float)w->anim_run->length/30.0f, - t = w->walk_timer, + t = animator->walk_timer, l = vg_clampf( animator->run*15.0f, 0.0f, 1.0f ), idle_walk = vg_clampf( (animator->run-0.1f)/(1.0f-0.1f), 0.0f, 1.0f ); @@ -914,9 +915,15 @@ VG_STATIC void player__walk_bind( player_instance *player ){ w->anim_intro = skeleton_get_anim( sk, "into_skate" ); } -VG_STATIC void player__walk_transition( player_instance *player, v3f angles ){ +VG_STATIC void player__walk_transition( player_instance *player ){ struct player_walk *w = &player->_walk; w->state.activity = k_walk_activity_air; + w->state.outro_type = k_walk_outro_none; + w->state.outro_start_time = 0.0; + w->state.jump_queued = 0; + w->state.jump_input_time = 0.0; + w->state.walk_timer = 0.0f; + w->state.step_phase = 0; v3f fwd = { 0.0f, 0.0f, 1.0f }; q_mulv( player->rb.q, fwd, fwd );