summaryrefslogtreecommitdiff
path: root/indra/newview/llvieweraudio.cpp
diff options
context:
space:
mode:
authorYchebotarev ProductEngine <ychebotarev@productengine.com>2010-02-02 13:20:00 +0200
committerYchebotarev ProductEngine <ychebotarev@productengine.com>2010-02-02 13:20:00 +0200
commitfb174d1de39a2b551030da09e0dd9262b79278df (patch)
treee68c81bfbb13de6eff99436a6acb4b2179dd2012 /indra/newview/llvieweraudio.cpp
parente6538ddbe95f0c297e67b9f5decabfcb6241ed2a (diff)
parent9b0518dd8e46dfe74eaa0f7622b1486dbde32b82 (diff)
merge
--HG-- branch : product-engine
Diffstat (limited to 'indra/newview/llvieweraudio.cpp')
-rw-r--r--indra/newview/llvieweraudio.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp
index 38103f9e41..934981b0ad 100644
--- a/indra/newview/llvieweraudio.cpp
+++ b/indra/newview/llvieweraudio.cpp
@@ -242,10 +242,29 @@ void audio_update_wind(bool force_update)
// outside the fade-in.
F32 master_volume = gSavedSettings.getBOOL("MuteAudio") ? 0.f : gSavedSettings.getF32("AudioLevelMaster");
F32 ambient_volume = gSavedSettings.getBOOL("MuteAmbient") ? 0.f : gSavedSettings.getF32("AudioLevelAmbient");
+ F32 max_wind_volume = master_volume * ambient_volume;
- F32 wind_volume = master_volume * ambient_volume;
- gAudiop->mMaxWindGain = wind_volume;
-
+ const F32 WIND_SOUND_TRANSITION_TIME = 2.f;
+ // amount to change volume this frame
+ F32 volume_delta = (LLFrameTimer::getFrameDeltaTimeF32() / WIND_SOUND_TRANSITION_TIME) * max_wind_volume;
+ if (force_update)
+ {
+ // initialize wind volume (force_update) by using large volume_delta
+ // which is sufficient to completely turn off or turn on wind noise
+ volume_delta = max_wind_volume;
+ }
+
+ // mute wind when not flying
+ if (gAgent.getFlying())
+ {
+ // volume increases by volume_delta, up to no more than max_wind_volume
+ gAudiop->mMaxWindGain = llmin(gAudiop->mMaxWindGain + volume_delta, max_wind_volume);
+ }
+ else
+ {
+ // volume decreases by volume_delta, down to no less than 0
+ gAudiop->mMaxWindGain = llmax(gAudiop->mMaxWindGain - volume_delta, 0.f);
+ }
last_camera_water_height = camera_water_height;
gAudiop->updateWind(gRelativeWindVec, camera_water_height);