sorta ready
[carveJwlIkooP6JGAAIwe30JlM.git] / player_skate.c
index e1971b2000725198264cf07b6d7ec5f65e675d40..f2a1cd0feffda829eed9ed87d7cee6c8a899f7ed 100644 (file)
@@ -55,7 +55,7 @@ VG_STATIC int skate_collide_smooth( player_instance *player,
                                     m4x3f mtx, rb_sphere *sphere,
                                     rb_ct *man )
 {
-   world_instance *world = get_active_world();
+   world_instance *world = world_current_instance();
 
    int len = 0;
    len = rb_sphere__scene( mtx, sphere, NULL, &world->rb_geo.inf.scene, man );
@@ -92,7 +92,7 @@ VG_STATIC int skate_grind_scansq( player_instance *player,
                                   v3f pos, v3f dir, float r,
                                   struct grind_info *inf )
 {
-   world_instance *world = get_active_world();
+   world_instance *world = world_current_instance();
 
    v4f plane;
    v3_copy( dir, plane );
@@ -102,10 +102,6 @@ VG_STATIC int skate_grind_scansq( player_instance *player,
    boxf box;
    v3_add( pos, (v3f){ r, r, r }, box[1] );
    v3_sub( pos, (v3f){ r, r, r }, box[0] );
-   
-   bh_iter it;
-   bh_iter_init( 0, &it );
-   int idx;
 
    struct grind_sample
    {
@@ -124,7 +120,11 @@ VG_STATIC int skate_grind_scansq( player_instance *player,
    v3_cross( plane, player->basis[1], support_axis );
    v3_normalize( support_axis );
    
-   while( bh_next( world->geo_bh, &it, box, &idx ) ){
+   bh_iter it;
+   bh_iter_init_box( 0, &it, box );
+   i32 idx;
+   
+   while( bh_next( world->geo_bh, &it, &idx ) ){
       u32 *ptri = &world->scene_geo.arrindices[ idx*3 ];
       v3f tri[3];
 
@@ -348,7 +348,7 @@ VG_STATIC int create_jumps_to_hit_target( player_instance *player,
 VG_STATIC 
 void player__approximate_best_trajectory( player_instance *player )
 {
-   world_instance *world0 = get_active_world();
+   world_instance *world0 = world_current_instance();
 
    struct player_skate *s = &player->_skate;
    float k_trace_delta = k_rb_delta * 10.0f;
@@ -502,7 +502,7 @@ void player__approximate_best_trajectory( player_instance *player )
                m3x3_mul( gate->transport, basis, basis );
 
                if( gate->type == k_gate_type_nonlocel ){
-                  trace_world = &world_global.worlds[ gate->target ];
+                  trace_world = &world_static.worlds[ gate->target ];
                }
             }
          }
@@ -980,7 +980,7 @@ VG_STATIC void skate_apply_jump_model( player_instance *player )
       s->state.jump_time = vg.time;
 
       audio_lock();
-      audio_oneshot_3d( &audio_jumps[rand()%2], player->rb.co, 40.0f, 1.0f );
+      audio_oneshot_3d( &audio_jumps[vg_randu32()%2], player->rb.co, 40.0f, 1.0f );
       audio_unlock();
    }
 }
@@ -1192,13 +1192,10 @@ VG_STATIC void player__skate_post_update( player_instance *player )
       slide = 0.0f;
    }
 
-   static float menu_gate = 1.0f;
-   menu_gate = vg_lerpf( menu_gate, 1-cl_menu, vg.time_frame_delta*4.0f );
-
-   float
-         vol_main    = sqrtf( (1.0f-air)*attn*(1.0f-slide) * 0.4f ) * menu_gate,
-         vol_air     = sqrtf(       air *attn * 0.5f )              * menu_gate,
-         vol_slide   = sqrtf( (1.0f-air)*attn*slide * 0.25f )       * menu_gate;
+   f32 gate        = 1.0f-menu.factive,
+       vol_main    = sqrtf( (1.0f-air)*attn*(1.0f-slide) * 0.4f ) * gate,
+       vol_air     = sqrtf(       air *attn * 0.5f )              * gate,
+       vol_slide   = sqrtf( (1.0f-air)*attn*slide * 0.25f )       * gate;
 
    const u32 flags = AUDIO_FLAG_SPACIAL_3D|AUDIO_FLAG_LOOP;
 
@@ -1323,7 +1320,7 @@ int skate_compute_surface_alignment( player_instance *player,
                                      v3f surface_normal, v3f axel_dir )
 {
    struct player_skate *s = &player->_skate;
-   world_instance *world = get_active_world();
+   world_instance *world = world_current_instance();
 
    v3f truck, left, right;
    m4x3_mulv( player->rb.to_world, ra, truck );
@@ -1536,7 +1533,7 @@ VG_STATIC int skate_point_visible( v3f origin, v3f target )
    v3_muls( dir, 1.0f/ray.dist, dir );
    ray.dist -= 0.025f;
 
-   if( ray_world( get_active_world(), origin, dir, &ray ) )
+   if( ray_world( world_current_instance(), origin, dir, &ray ) )
       return 0;
 
    return 1;
@@ -2078,7 +2075,7 @@ VG_STATIC enum skate_activity skate_availible_grind( player_instance *player )
 VG_STATIC void player__skate_update( player_instance *player )
 {
    struct player_skate *s = &player->_skate;
-   world_instance *world = get_active_world();
+   world_instance *world = world_current_instance();
 
    v3_copy( player->rb.co, s->state.prev_pos );
    s->state.activity_prev = s->state.activity;
@@ -2199,7 +2196,7 @@ VG_STATIC void player__skate_update( player_instance *player )
          if( !prev_contacts[i] ){
             v3f co;
             m4x3_mulv( player->rb.to_world, wheels[i].pos, co );
-            audio_oneshot_3d( &audio_taps[rand()%4], co, 40.0f, 0.75f );
+            audio_oneshot_3d( &audio_taps[vg_randu32()%4], co, 40.0f, 0.75f );
          }
       }
       audio_unlock();
@@ -2573,11 +2570,11 @@ begin_collision:;
 
       if( s->state.activity == k_skate_activity_ground ){
          if( (fabsf(s->state.slip) > 0.75f) ){
-            audio_oneshot_3d( &audio_lands[rand()%2+3], player->rb.co, 
+            audio_oneshot_3d( &audio_lands[vg_randu32()%2+3], player->rb.co, 
                               40.0f, 1.0f );
          }
          else{
-            audio_oneshot_3d( &audio_lands[rand()%3], player->rb.co, 
+            audio_oneshot_3d( &audio_lands[vg_randu32()%3], player->rb.co, 
                               40.0f, 1.0f );
          }
       }
@@ -2668,7 +2665,7 @@ VG_STATIC void player__skate_animate( player_instance *player,
 
    float curspeed  = v3_length( player->rb.v ),
          kickspeed = vg_clampf( curspeed*(1.0f/40.0f), 0.0f, 1.0f ),
-         kicks     = (vg_randf()-0.5f)*2.0f*kickspeed,
+         kicks     = (vg_randf64()-0.5f)*2.0f*kickspeed,
          sign      = vg_signf( kicks );
 
    s->wobble[0] = vg_lerpf( s->wobble[0], kicks*kicks*sign, 6.0f*vg.time_delta);