modular stuffs
[carveJwlIkooP6JGAAIwe30JlM.git] / player_skate.c
index fc10b7341fc0487cff6ba9b68ddde5f87efff120..7da514f7609f0639448d54ee899051c2f90ca345 100644 (file)
@@ -128,7 +128,7 @@ VG_STATIC int skate_grind_scansq( player_instance *player,
       v3f tri[3];
 
       struct world_surface *surf = world_tri_index_surface(world,ptri[0]);
-      if( !(surf->info.flags & k_material_flag_skate_surface) )
+      if( !(surf->info.flags & k_material_flag_grindable) )
          continue;
 
       for( int j=0; j<3; j++ )
@@ -532,11 +532,13 @@ void player__approximate_best_trajectory( player_instance *player )
             inf->score = -v3_dot( ve, inf->n );
             inf->land_dist = t + k_trace_delta * t1;
 
-            
             /* Bias prediction towords ramps */
-            if( !(surf->info.flags & k_material_flag_skate_surface) )
+            if( !(surf->info.flags & k_material_flag_skate_target) )
                inf->score *= 10.0f;
 
+            if( surf->info.flags & k_material_flag_boundary )
+               s->possible_jump_count --;
+
             break;
          }
          
@@ -2955,15 +2957,20 @@ VG_STATIC void player__skate_animate( player_instance *player,
       q_mul( kf_board->q, qtrick, kf_board->q );
       q_normalize( kf_board->q );
 
+      struct player_board *board = player->playerboard;
 
       /* foot weight distribution */
       if( s->blend_weight > 0.0f ){
-         kf_foot_l->co[2] += s->blend_weight * 0.2f;
-         kf_foot_r->co[2] += s->blend_weight * 0.1f;
+         kf_foot_l->co[2] = 
+            vg_lerpf( kf_foot_l->co[2], 
+                      board->truck_positions[k_board_truck_back][2]+0.3f, 
+                      0.5f*s->blend_weight );
       }
       else{
-         kf_foot_r->co[2] += s->blend_weight * 0.3f;
-         kf_foot_l->co[2] += s->blend_weight * 0.1f;
+         kf_foot_r->co[2] = 
+            vg_lerpf( kf_foot_r->co[2], 
+                      board->truck_positions[k_board_truck_front][2]-0.3f, 
+                      -0.5f*s->blend_weight );
       }
 
       float slapm = vg_maxf( 1.0f-v3_length2( s->state.trick_vel ), 0.0f );