Changed: #1459 Use effects group controller for ryzom client effects volume control

--HG--
branch : sound_dev
This commit is contained in:
kaetemi 2012-04-11 11:24:48 +02:00
parent 7a95fae1f9
commit 18f75a4bd0
4 changed files with 17 additions and 3 deletions

View file

@ -75,6 +75,8 @@ public:
virtual void setUserGain(float gain) { NLMISC::clamp(gain, 0.0f, 1.0f); m_UserGain = gain; updateSourceGain(); } virtual void setUserGain(float gain) { NLMISC::clamp(gain, 0.0f, 1.0f); m_UserGain = gain; updateSourceGain(); }
virtual float getUserGain() { return m_UserGain; } virtual float getUserGain() { return m_UserGain; }
virtual void setGain(float devGain, float userGain) { NLMISC::clamp(devGain, 0.0f, 1.0f); NLMISC::clamp(userGain, 0.0f, 1.0f); m_DevGain = devGain; m_UserGain = userGain; updateSourceGain(); }
//@} //@}
inline float getFinalGain() const { return m_FinalGain; } inline float getFinalGain() const { return m_FinalGain; }

View file

@ -56,6 +56,8 @@ public:
virtual void setUserGain(float gain) = 0; virtual void setUserGain(float gain) = 0;
virtual float getUserGain() = 0; virtual float getUserGain() = 0;
virtual void setGain(float devGain, float userGain) = 0;
protected: protected:
virtual ~UGroupController() { } virtual ~UGroupController() { }

View file

@ -138,9 +138,11 @@ CSoundManager::~CSoundManager()
// detach the sound from the particule system // detach the sound from the particule system
NL3D::UParticleSystemSound::setPSSound(NULL); NL3D::UParticleSystemSound::setPSSound(NULL);
_GroupControllerEffects = NULL;
// free the audio mixer (and delete all sources) // free the audio mixer (and delete all sources)
if (_AudioMixer) delete _AudioMixer;
delete _AudioMixer; _AudioMixer = NULL;
// release sound anim properly // release sound anim properly
releaseSoundAnim(); releaseSoundAnim();
@ -404,6 +406,8 @@ void CSoundManager::reset ()
NL3D::UParticleSystemSound::setPSSound(NULL); NL3D::UParticleSystemSound::setPSSound(NULL);
_GroupControllerEffects = NULL;
delete _AudioMixer; delete _AudioMixer;
_AudioMixer = NULL; _AudioMixer = NULL;
@ -477,6 +481,9 @@ void CSoundManager::init(IProgressCallback *progressCallBack)
*/ */
new CSoundAnimManager(_AudioMixer); new CSoundAnimManager(_AudioMixer);
// get the controller group for effects
_GroupControllerEffects = _AudioMixer->getGroupController("effects");
// restore the volume // restore the volume
SoundMngr->setSFXVolume(ClientCfg.SoundSFXVolume); SoundMngr->setSFXVolume(ClientCfg.SoundSFXVolume);
SoundMngr->setGameMusicVolume(ClientCfg.SoundGameMusicVolume); SoundMngr->setGameMusicVolume(ClientCfg.SoundGameMusicVolume);
@ -1536,7 +1543,7 @@ void CSoundManager::updateVolume()
_AudioMixer->setEventMusicVolume(_GameMusicVolume); _AudioMixer->setEventMusicVolume(_GameMusicVolume);
// update sfx volume // update sfx volume
_AudioMixer->getListener()->setGain(_SFXVolume*_FadeSFXVolume); _GroupControllerEffects->setGain(_FadeSFXVolume, _SFXVolume);
} }
} }

View file

@ -332,6 +332,9 @@ private:
/// Pointer on the audio mixer object /// Pointer on the audio mixer object
NLSOUND::UAudioMixer *_AudioMixer; NLSOUND::UAudioMixer *_AudioMixer;
/// The root effects group controller for volume settings
NLSOUND::UGroupController *_GroupControllerEffects;
/// Pointer on the root of the environmental sounds tree (if any) /// Pointer on the root of the environmental sounds tree (if any)
NLSOUND::UEnvSound *_EnvSoundRoot; NLSOUND::UEnvSound *_EnvSoundRoot;