]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_dma.c
Added qc fs search functions, so the qcs can easily verify directories contents,...
[xonotic/darkplaces.git] / snd_dma.c
index 1255ef36c6166628a852749d2924111a87f8400f..1523b46f76722e3c00e1e29ada252391add9dfd6 100644 (file)
--- a/snd_dma.c
+++ b/snd_dma.c
@@ -42,16 +42,17 @@ int total_channels;
 
 int snd_blocked = 0;
 static qboolean snd_ambient = 1;
-qboolean snd_initialized = false;
+//qboolean snd_initialized = false;
+cvar_t snd_initialized = { CVAR_READONLY, "snd_initialized", "0"};
 
 // pointer should go away
 volatile dma_t *shm = 0;
 volatile dma_t sn;
 
-vec3_t listener_origin;
-vec3_t listener_forward;
-vec3_t listener_right;
-vec3_t listener_up;
+vec3_t listener_vieworigin;
+vec3_t listener_viewforward;
+vec3_t listener_viewleft;
+vec3_t listener_viewup;
 vec_t sound_nominal_clip_dist=1000.0;
 mempool_t *snd_mempool;
 
@@ -144,7 +145,7 @@ void S_LoadSounds(void)
 
 void S_Startup(void)
 {
-       if (!snd_initialized)
+       if (!snd_initialized.integer)
                return;
 
        shm = &sn;
@@ -236,6 +237,7 @@ void S_Init(void)
 
        Cvar_RegisterVariable(&nosound);
        Cvar_RegisterVariable(&snd_precache);
+       Cvar_RegisterVariable(&snd_initialized);
        Cvar_RegisterVariable(&bgmbuffer);
        Cvar_RegisterVariable(&ambient_level);
        Cvar_RegisterVariable(&ambient_fade);
@@ -244,7 +246,7 @@ void S_Init(void)
        Cvar_RegisterVariable(&_snd_mixahead);
        Cvar_RegisterVariable(&snd_swapstereo); // LordHavoc: for people with backwards sound wiring
 
-       snd_initialized = true;
+       Cvar_SetValueQuick(&snd_initialized, true);
 
        known_sfx = Mem_Alloc(snd_mempool, MAX_SFX*sizeof(sfx_t));
        num_sfx = 0;
@@ -273,7 +275,7 @@ sfx_t *S_GetCached (const char *name)
 {
        int i;
 
-       if (!snd_initialized)
+       if (!snd_initialized.integer)
                return NULL;
 
        if (!name)
@@ -300,7 +302,7 @@ sfx_t *S_FindName (char *name)
        int i;
        sfx_t *sfx;
 
-       if (!snd_initialized)
+       if (!snd_initialized.integer)
                return NULL;
 
        if (!name)
@@ -345,7 +347,7 @@ sfx_t *S_PrecacheSound (char *name, int complain)
 {
        sfx_t *sfx;
 
-       if (!snd_initialized)
+       if (!snd_initialized.integer)
                return NULL;
 
        sfx = S_FindName(name);
@@ -432,15 +434,15 @@ void SND_Spatialize(channel_t *ch, int isstatic)
                }
 
                // calculate stereo seperation and distance attenuation
-               VectorSubtract(ch->origin, listener_origin, source_vec);
+               VectorSubtract(ch->origin, listener_vieworigin, source_vec);
                dist = VectorNormalizeLength(source_vec);
                // distance
                scale = ch->master_vol * (1.0 - (dist * ch->dist_mult));
                // panning
-               pan = scale * DotProduct(listener_right, source_vec);
+               pan = scale * DotProduct(listener_viewleft, source_vec);
                // calculate the volumes
-               ch->leftvol = (int) (scale - pan);
-               ch->rightvol = (int) (scale + pan);
+               ch->leftvol = (int) (scale + pan);
+               ch->rightvol = (int) (scale - pan);
        }
 
        // LordHavoc: allow adjusting volume of static sounds
@@ -676,7 +678,7 @@ void S_UpdateAmbientSounds (void)
        if (!snd_ambient || ambient_level.value <= 0 || !cl.worldmodel || !cl.worldmodel->brush.AmbientSoundLevelsForPoint)
                return;
 
-       cl.worldmodel->brush.AmbientSoundLevelsForPoint(cl.worldmodel, listener_origin, ambientlevels, sizeof(ambientlevels));
+       cl.worldmodel->brush.AmbientSoundLevelsForPoint(cl.worldmodel, listener_vieworigin, ambientlevels, sizeof(ambientlevels));
 
 // calc ambient sound levels
        for (ambient_channel = 0 ; ambient_channel< NUM_AMBIENTS ; ambient_channel++)
@@ -717,20 +719,20 @@ S_Update
 Called once each time through the main loop
 ============
 */
-void S_Update(vec3_t origin, vec3_t forward, vec3_t right, vec3_t up)
+void S_Update(vec3_t origin, vec3_t forward, vec3_t left, vec3_t up)
 {
        int                     i, j;
        int                     total;
        channel_t       *ch;
        channel_t       *combine;
 
-       if (!snd_initialized || (snd_blocked > 0))
+       if (!snd_initialized.integer || (snd_blocked > 0))
                return;
 
-       VectorCopy(origin, listener_origin);
-       VectorCopy(forward, listener_forward);
-       VectorCopy(right, listener_right);
-       VectorCopy(up, listener_up);
+       VectorCopy(origin, listener_vieworigin);
+       VectorCopy(forward, listener_viewforward);
+       VectorCopy(left, listener_viewleft);
+       VectorCopy(up, listener_viewup);
 
 // update general area ambient sound sources
        S_UpdateAmbientSounds ();
@@ -924,7 +926,7 @@ static void S_Play_Common(float fvol, float attenuation)
                else
                        i++;
 
-               S_StartSound(-1, 0, sfx, listener_origin, fvol, attenuation);
+               S_StartSound(-1, 0, sfx, listener_vieworigin, fvol, attenuation);
        }
 }
 
@@ -969,7 +971,7 @@ void S_LocalSound (char *sound)
 {
        sfx_t   *sfx;
 
-       if (!snd_initialized || nosound.integer)
+       if (!snd_initialized.integer || nosound.integer)
                return;
 
        sfx = S_PrecacheSound (sound, true);