diff options
| author | Palmer Truelson <palmer@lindenlab.com> | 2010-02-23 17:19:58 -0800 |
|---|---|---|
| committer | Palmer Truelson <palmer@lindenlab.com> | 2010-02-23 17:19:58 -0800 |
| commit | 54a95f706fe42cbef272c53e3fadfc2cf7ecfd0f (patch) | |
| tree | d9b1f05ce695fa3ef5ee41949d3799d4e9a3e050 /indra/newview/llvieweraudio.cpp | |
| parent | 7885748497d8b95f51c65f7f84a40d1405429616 (diff) | |
| parent | 0980df1e0ce99bdafdd4e806cbacad96c71729cc (diff) | |
merge
Diffstat (limited to 'indra/newview/llvieweraudio.cpp')
| -rw-r--r-- | indra/newview/llvieweraudio.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp index 38103f9e41..1d935f5ab8 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 = 1.f; + } + + // 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); |
