ent_challenge extra features
[carveJwlIkooP6JGAAIwe30JlM.git] / player_walk.c
index 2c038431e175825427749f2f37f56c5acf0f56c8..87c2246fe6960a662852f3210d95abfc8e1c062d 100644 (file)
@@ -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 );