From d1c31952b53260758740f51109bf39af6d70a237 Mon Sep 17 00:00:00 2001 From: Filip Gawin Date: Sat, 22 Sep 2018 22:22:54 +0200 Subject: [PATCH] Implement basic sound volume managment Basic of basics. :P --- rwengine/src/audio/SoundManager.cpp | 17 ++++++++++++++++- rwengine/src/audio/SoundManager.hpp | 13 +++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/rwengine/src/audio/SoundManager.cpp b/rwengine/src/audio/SoundManager.cpp index 4abf7b6c..33ae5e62 100644 --- a/rwengine/src/audio/SoundManager.cpp +++ b/rwengine/src/audio/SoundManager.cpp @@ -210,6 +210,8 @@ bool SoundManager::isPaused(const std::string& name) { void SoundManager::playSound(const std::string& name) { auto sound = sounds.find(name); if (sound != sounds.end()) { + auto vol = getCalculatedVolumeOfMusic(); + sound->second.setGain(vol); return sound->second.play(); } } @@ -224,7 +226,7 @@ void SoundManager::playSfx(size_t name, const glm::vec3& position, bool looping, } buffer->second.setPitch(1.f); - buffer->second.setGain(1.f); + buffer->second.setGain(getCalculatedVolumeOfEffects()); if (maxDist != -1) { buffer->second.setMaxDistance(static_cast(maxDist)); } @@ -322,3 +324,16 @@ void SoundManager::setSoundPosition(const std::string& name, position.y, position.z)); } } + + +void SoundManager::setVolume(float vol) { + _volume = vol; +} + +float SoundManager::getCalculatedVolumeOfEffects() const { + return _volume * _effectsVolume; +} + +float SoundManager::getCalculatedVolumeOfMusic() const { + return _volume * _musicVolume; +} diff --git a/rwengine/src/audio/SoundManager.hpp b/rwengine/src/audio/SoundManager.hpp index 867110ef..4859006f 100644 --- a/rwengine/src/audio/SoundManager.hpp +++ b/rwengine/src/audio/SoundManager.hpp @@ -85,6 +85,10 @@ public: void pause(bool p); + void setVolume(float vol); + float getCalculatedVolumeOfEffects() const; + float getCalculatedVolumeOfMusic() const; + private: bool initializeOpenAL(); void initializeAVCodec(); @@ -106,6 +110,15 @@ private: GameWorld* _engine; LoaderSDT sdt{}; + + /// Sound volume + float _volume = 1.f; + + /// Multiplier for effects + float _effectsVolume = 0.2f; + + /// Multiplier for music and cutscenes audio + float _musicVolume = 1.f; }; #endif