]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
Underwater sound filter: simplify code, improve cvar description
authorbones_was_here <bones_was_here@xonotic.au>
Sun, 10 Mar 2024 16:10:57 +0000 (02:10 +1000)
committerbones_was_here <bones_was_here@xonotic.au>
Sun, 10 Mar 2024 16:10:57 +0000 (02:10 +1000)
Signed-off-by: bones_was_here <bones_was_here@xonotic.au>
snd_main.c
snd_mix.c

index 029e65d953f581e85c59c7078755f80771f2b3f0..03d7e33e76ae59c9892810a11809bb2532dac5b3 100644 (file)
@@ -120,7 +120,6 @@ static const speakerlayout_t snd_speakerlayouts[] =
        }
 };
 
-void S_SetUnderwaterIntensity(void);
 
 // =======================================================================
 // Internal sound data & structures
@@ -184,7 +183,7 @@ cvar_t snd_spatialization_prologic_frontangle = {CF_CLIENT | CF_ARCHIVE, "snd_sp
 cvar_t snd_spatialization_occlusion = {CF_CLIENT | CF_ARCHIVE, "snd_spatialization_occlusion", "1", "enable occlusion testing on spatialized sounds, which simply quiets sounds that are blocked by the world; 1 enables PVS method, 2 enables LineOfSight method, 3 enables both"};
 
 // Cvars declared in snd_main.h (shared with other snd_*.c files)
-cvar_t snd_waterfx = {CF_CLIENT | CF_ARCHIVE, "snd_waterfx", "1", "underwater sound filter"};
+cvar_t snd_waterfx = {CF_CLIENT | CF_ARCHIVE, "snd_waterfx", "1", "underwater sound filter strength"};
 cvar_t _snd_mixahead = {CF_CLIENT | CF_ARCHIVE, "_snd_mixahead", "0.15", "how much sound to mix ahead of time"};
 cvar_t snd_streaming = {CF_CLIENT | CF_ARCHIVE, "snd_streaming", "1", "enables keeping compressed ogg sound files compressed, decompressing them only as needed, otherwise they will be decompressed completely at load (may use a lot of memory); when set to 2, streaming is performed even if this would waste memory"};
 cvar_t snd_streaming_length = {CF_CLIENT | CF_ARCHIVE, "snd_streaming_length", "1", "decompress sounds completely if they are less than this play time when snd_streaming is 1"};
index b83c3ae74373782b643d50dbfb7891eb64546dd1..9d5c2e54748357bac63074411114388e7d743e6e 100644 (file)
--- a/snd_mix.c
+++ b/snd_mix.c
@@ -323,32 +323,24 @@ Muffles the intensity of sounds when the player is underwater
 
 static struct
 {
-       float   intensity;
-       float   alpha;
-       float   accum[SND_LISTENERS];
+       float intensity;
+       float alpha;
+       float accum[SND_LISTENERS];
 }
 underwater = {0.f, 1.f, {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}};
 
 void S_SetUnderwaterIntensity(void)
 {
-       float host_frametime = cl.realframetime;
-       float target = cl.view_underwater ? 1.f : 0.f;
-
-       if (snd_waterfx.value < 0.f)
-               target *= 0.f;
-       else if (snd_waterfx.value > 2.f)
-               target *= 2.f;
-       else
-               target *= snd_waterfx.value;
+       float target = cl.view_underwater ? bound(0.f, snd_waterfx.value, 2.f) : 0.f;
 
        if (underwater.intensity < target)
        {
-               underwater.intensity += host_frametime * 4.f;
+               underwater.intensity += cl.realframetime * 4.f;
                underwater.intensity = min(underwater.intensity, target);
        }
        else if (underwater.intensity > target)
        {
-               underwater.intensity -= host_frametime * 4.f;
+               underwater.intensity -= cl.realframetime * 4.f;
                underwater.intensity = max(underwater.intensity, target);
        }