update helpers/location to 'frosted' ui
[carveJwlIkooP6JGAAIwe30JlM.git] / world_audio.c
index a8e88d6631fdbf00e14ad98774a32bdbb56a5b64..b33d62fd30ee80d678e214583424037d3e6bb57c 100644 (file)
@@ -1,12 +1,9 @@
-#ifndef WORLD_AUDIO_C
-#define WORLD_AUDIO_C
-
 #include "audio.h"
 #include "world_audio.h"
 
 /* finds any active playing in world and fades them out, we can only do this 
  * while unloading */
-VG_STATIC void world_fadeout_audio( world_instance *world )
+void world_fadeout_audio( world_instance *world )
 {
    if( world->status != k_world_status_unloading ){
       vg_fatal_error( "World status must be set to 'unloading', to fadeout"
@@ -29,12 +26,11 @@ VG_STATIC void world_fadeout_audio( world_instance *world )
 /*
  * Trace out a random point, near the player to try and determine water areas
  */
-VG_STATIC 
 enum audio_sprite_type world_audio_sample_sprite_random(v3f origin, v3f output)
 {
-   v3f chance = { (vg_randf64()-0.5f) * 30.0f, 
-                  8.0f,
-                  (vg_randf64()-0.5f) * 30.0f };
+   v3f chance = { (vg_randf64(&vg.rand)-0.5f) * 30.0f, 
+                  8,
+                  (vg_randf64(&vg.rand)-0.5f) * 30.0f };
    
    v3f pos;
    v3_add( chance, origin, pos );
@@ -44,7 +40,8 @@ enum audio_sprite_type world_audio_sample_sprite_random(v3f origin, v3f output)
 
    world_instance *world = world_current_instance();
    
-   if( ray_world( world, pos, (v3f){0.0f,-1.0f,0.0f}, &contact ) ){
+   if( ray_world( world, pos, (v3f){0.0f,-1.0f,0.0f}, &contact, 
+            k_material_flag_ghosts ) ){
       struct world_surface *mat = ray_hit_surface( world, &contact );
 
       if( mat->info.surface_prop == k_surface_prop_grass){
@@ -62,13 +59,13 @@ enum audio_sprite_type world_audio_sample_sprite_random(v3f origin, v3f output)
 
    float dist = fabsf(output[1] - origin[1]);
    
-   if( world->water.enabled && dist<=40.0f )
+   if( world->water.enabled && dist<=40.0f && !(world->info.flags&0x2) )
       return k_audio_sprite_type_water;
    else
       return k_audio_sprite_type_none;
 }
 
-VG_STATIC void world_audio_sample_distances( v3f co, int *index, float *value )
+void world_audio_sample_distances( v3f co, int *index, float *value )
 {
    float inr3 = 0.57735027,
          inr2 = 0.70710678118;
@@ -104,7 +101,8 @@ VG_STATIC void world_audio_sample_distances( v3f co, int *index, float *value )
    float dist = 200.0f;
 
    for( int i=0; i<10; i++ ){
-      if( ray_world( world_current_instance(), rc, rd, &ray ) ){
+      if( ray_world( world_current_instance(), rc, rd, &ray, 
+                     k_material_flag_ghosts ) ){
          dist = (float)i*5.0f + ray.dist;
          break;
       }
@@ -115,7 +113,7 @@ VG_STATIC void world_audio_sample_distances( v3f co, int *index, float *value )
 
    distances[si] = dist;
 
-   if( vg_audio.debug_ui && vg_lines.draw ){
+   if( vg_audio.debug_ui && vg_lines.enabled ){
       for( int i=0; i<14; i++ ){
          if( distances[i] != 200.0f ){
             u32 colours[] = { VG__RED, VG__BLUE, VG__GREEN,
@@ -139,5 +137,3 @@ VG_STATIC void world_audio_sample_distances( v3f co, int *index, float *value )
    if( si >= 14 )
       si = 0;
 }
-
-#endif /* WORLD_AUDIO_C */