From da1a0abc0c32b4283746949ba9a135a7d3c0b82c Mon Sep 17 00:00:00 2001 From: hgn Date: Thu, 20 Jul 2023 00:54:34 +0100 Subject: [PATCH] animator bugs --- player_render.c | 4 ++-- player_walk.c | 17 +++++++++-------- player_walk.h | 10 ++++++---- skaterift.c | 7 +++---- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/player_render.c b/player_render.c index d0d14a4..38e6586 100644 --- a/player_render.c +++ b/player_render.c @@ -162,15 +162,15 @@ VG_STATIC void player_apply_pose_to_skeleton( player_instance *player ){ VG_STATIC void player__animate( player_instance *player ){ if( _player_animate[ player->subsystem ] && - _player_pose[ player->subsystem ] ){ + _player_pose[ player->subsystem ] ){ _player_animate[ player->subsystem ]( player ); _player_pose[ player->subsystem ]( player, &player->pose ); - player_pose *pose = &player->pose; struct skeleton *sk = &player->playeravatar->sk; if( player->holdout_time > 0.0f ){ + player_pose *pose = &player->pose; skeleton_lerp_pose( sk, pose->keyframes, player->holdout_pose.keyframes, player->holdout_time, pose->keyframes ); diff --git a/player_walk.c b/player_walk.c index 077dfd9..815e4b4 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 ); @@ -796,10 +796,11 @@ VG_STATIC void player__walk_pose( player_instance *player, player_pose *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 ); diff --git a/player_walk.h b/player_walk.h index 3dcdbd8..d422e75 100644 --- a/player_walk.h +++ b/player_walk.h @@ -38,13 +38,13 @@ struct player_walk{ int jump_queued; f64 jump_input_time; + + f32 walk_timer; + int step_phase; } state; - f32 move_speed, - walk_timer; - - int step_phase; + f32 move_speed; enum mdl_surface_prop surface; struct skeleton_anim *anim_walk, *anim_run, *anim_idle, *anim_jump, @@ -57,6 +57,8 @@ struct player_walk{ run, walk; + f32 walk_timer; + v3f foot_anchor; enum walk_outro outro_type; f32 outro_t, diff --git a/skaterift.c b/skaterift.c index f790aef..3e3af23 100644 --- a/skaterift.c +++ b/skaterift.c @@ -480,12 +480,13 @@ VG_STATIC void skaterift_composite_maincamera(void){ } VG_STATIC void render_main_game(void){ - player__animate( &localplayer ); if( skaterift.activity == k_skaterift_replay ){ player__animate_from_replay( &localplayer, &skaterift.replay ); } - else + else{ + player__animate( &localplayer ); skaterift_record_frame( &skaterift.replay, 0 ); + } player__pre_render( &localplayer ); skaterift_composite_maincamera(); @@ -508,8 +509,6 @@ VG_STATIC void render_main_game(void){ it up with the oblique rendering inside the portals */ - //world_render_challenges( localplayer.viewable_world ); - /* continue with variable rate */ render_scene_gate_subview(); -- 2.25.1