X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_walk.c;h=7d160a7a09d0d801cb19f15bc230cb5f9b37c8f1;hb=8c376ed2e4021a18b0a6c6e800109d67ad09d198;hp=1e92bb1a26015e4118361c957284daabd16f1600;hpb=72c40f1bc7a732f6a628dbf8a4135ac0bf3efa4e;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_walk.c b/player_walk.c index 1e92bb1..7d160a7 100644 --- a/player_walk.c +++ b/player_walk.c @@ -255,25 +255,20 @@ VG_STATIC void player__walk_pre_update( player_instance *player ) if( w->state.activity != k_walk_activity_immobile ) player_look( player, player->angles ); - if( w->state.outro_anim ) - { + if( w->state.outro_anim ){ float outro_length = (float)w->state.outro_anim->length / w->state.outro_anim->rate, outro_time = vg.time - w->state.outro_start_time; - if( outro_time >= outro_length ) - { + if( outro_time >= outro_length ){ w->state.outro_anim = NULL; - if( w->state.outro_type == k_walk_outro_drop_in ) - { + if( w->state.outro_type == k_walk_outro_drop_in ){ player_walk_drop_in_to_skate( player ); } - else if( w->state.outro_type == k_walk_outro_jump_to_air ) - { + else if( w->state.outro_type == k_walk_outro_jump_to_air ){ player_walk_generic_to_skate( player, k_skate_activity_air, 0.0f ); } - else - { + else{ player_walk_generic_to_skate( player, k_skate_activity_ground, 1.0f ); } @@ -281,40 +276,40 @@ VG_STATIC void player__walk_pre_update( player_instance *player ) return; } } - else if( vg_input_button_down( player->input_use ) ) - { - if( w->state.activity == k_walk_activity_ground ) - { - if( player_walk_scan_for_drop_in( player ) ) - { - w->state.outro_type = k_walk_outro_drop_in; - w->state.outro_anim = w->anim_drop_in; - w->state.outro_start_time = vg.time; - w->state.activity = k_walk_activity_immobile; - - struct player_avatar *av = player->playeravatar; - m4x3_mulv( av->sk.final_mtx[ av->id_ik_foot_r ], - av->sk.bones[ av->id_ik_foot_r ].co, - w->state.drop_in_foot_anchor ); + else if( vg_input_button_down( player->input_use ) ){ + if( v3_dist2( player->rb.co, gzoomer.obj.rb.co ) <= 4.0f*4.0f ){ + player->subsystem = k_player_subsystem_drive; + } + else{ + if( w->state.activity == k_walk_activity_ground ){ + if( player_walk_scan_for_drop_in( player ) ){ + w->state.outro_type = k_walk_outro_drop_in; + w->state.outro_anim = w->anim_drop_in; + w->state.outro_start_time = vg.time; + w->state.activity = k_walk_activity_immobile; + + struct player_avatar *av = player->playeravatar; + m4x3_mulv( av->sk.final_mtx[ av->id_ik_foot_r ], + av->sk.bones[ av->id_ik_foot_r ].co, + w->state.drop_in_foot_anchor ); + } + else{ + w->state.outro_type = k_walk_outro_regular; + w->state.outro_anim = w->anim_intro; + w->state.outro_start_time = vg.time; + w->state.activity = k_walk_activity_lockedmove; + + if( player_xyspeed2(player) < 0.1f * 0.1f ) + q_mulv( player->rb.q, (v3f){0.0f,0.0f,1.6f}, player->rb.v ); + } } - else - { - w->state.outro_type = k_walk_outro_regular; - w->state.outro_anim = w->anim_intro; + else{ + w->state.outro_type = k_walk_outro_jump_to_air; + w->state.outro_anim = w->anim_jump_to_air; w->state.outro_start_time = vg.time; - w->state.activity = k_walk_activity_lockedmove; - - if( player_xyspeed2(player) < 0.1f * 0.1f ) - q_mulv( player->rb.q, (v3f){0.0f,0.0f,1.6f}, player->rb.v ); + return; } } - else - { - w->state.outro_type = k_walk_outro_jump_to_air; - w->state.outro_anim = w->anim_jump_to_air; - w->state.outro_start_time = vg.time; - return; - } } } @@ -604,7 +599,7 @@ VG_STATIC void player__walk_post_update( player_instance *player ) m3x3_copy( player->rb.to_world, mtx ); v3_add( player->rb.co, player->basis[1], mtx[3] ); - float substep = vg_clampf( vg.accumulator / k_rb_delta, 0.0f, 1.0f ); + float substep = vg.time_fixed_extrapolate; v3_muladds( mtx[3], player->rb.v, k_rb_delta*substep, mtx[3] ); debug_capsule( mtx, w->collider.radius, w->collider.height, VG__YELOW );