-#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"
" audio.\n" );
}
- u8 world_id = (world - world_static.worlds) + 1;
+ u8 world_id = (world - world_static.instances) + 1;
audio_lock();
for( u32 i=0; i<AUDIO_CHANNELS; i++ ){
/*
* 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 );
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){
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;
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;
}
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,
if( si >= 14 )
si = 0;
}
-
-#endif /* WORLD_AUDIO_C */