2de8bf2b07402f429e9bc4d42ad3a7b23117bc2e
[carveJwlIkooP6JGAAIwe30JlM.git] / world_audio.h
1 #ifndef WORLD_AUDIO_H
2 #define WORLD_AUDIO_H
3
4 #include "common.h"
5 #include "vg/vg_audio.h"
6 #include "audio.h"
7
8 #if 0
9 audio_pack audio_birds =
10 {
11 .sources = "sound/bird0.ogg\0"
12 "sound/bird1.ogg\0"
13 "sound/bird2.ogg\0",
14 .name = "Birds",
15 .source_mode = k_audio_source_compressed
16 };
17 #endif
18
19 static float k_audio_random_freq = 1.0f/10.0f,
20 k_audio_random_hz = 1.0f;
21
22 static double world_audio_last_tick = 0.0;
23
24 static struct world_ambient_layer
25 {
26 audio_player sys;
27 v3f pos;
28 }
29 world_ambient_layers[8];
30
31 static void world_audio_init(void)
32 {
33 #if 0
34 audio_pack_init( &audio_birds );
35
36 vg_convar_push( (struct vg_convar){
37 .name = "aud_random_freq",
38 .data = &k_audio_random_freq,
39 .data_type = k_convar_dtype_f32,
40 .opt_f32 = { .clamp = 0 },
41 .persistent = 1
42 });
43
44 for( int i=0; i<vg_list_size(world_ambient_layers); i++ )
45 {
46 struct world_ambient_layer *layer = &world_ambient_layers[i];
47 audio_player *sys = &layer->sys;
48 sys->_vol = 1.0f;
49 sys->ch = 1;
50 sys->name = "ambient";
51 sys->flags = SFX_FLAG_PERSISTENT;
52 }
53 #endif
54 }
55
56 static void world_audio_spawn_random( v3f around )
57 {
58 #if 0
59 for( int i=0; i<vg_list_size(world_ambient_layers); i++ )
60 {
61 struct world_ambient_layer *layer = &world_ambient_layers[i];
62
63 if( !layer->sys.is_playing )
64 {
65 sfx_set_playrnd( &audio_birds, &layer->sys, 0, 3 );
66
67 v3f chance;
68 vg_rand_sphere( chance );
69 v3_muladds( around, chance, 100.0f, layer->pos );
70
71 return;
72 }
73 }
74 #endif
75 }
76
77 static void world_audio_update( v3f around, v3f ears )
78 {
79 #if 0
80 if( world_audio_last_tick + (double)k_audio_random_hz < vg_time )
81 {
82 world_audio_last_tick = vg_time;
83
84 float chance = vg_randf();
85 if( chance < k_audio_random_freq )
86 {
87 world_audio_spawn_random( around );
88 }
89 }
90
91 /* Spacialize */
92 for( int i=0; i<vg_list_size(world_ambient_layers); i++ )
93 {
94 struct world_ambient_layer *layer = &world_ambient_layers[i];
95
96 if( layer->sys.is_playing )
97 audio_player_spacialize(&layer->sys, layer->pos, around, ears, 30.0f);
98 }
99 #endif
100 }
101
102 static void world_audio_debug(void)
103 {
104 #if 0
105 for( int i=0; i<vg_list_size(world_ambient_layers); i++ )
106 {
107 struct world_ambient_layer *layer = &world_ambient_layers[i];
108
109 if( layer->sys.is_playing )
110 {
111 vg_line_pt3( layer->pos, 1.0f, 0xffff00ff );
112 }
113 }
114 #endif
115 }
116
117 #endif /* WORLD_AUDIO_H */