Sound channel volume not overriding individual volume for sounds.

This commit is contained in:
Stiffly
2015-09-29 11:09:43 +02:00
parent a97dae542d
commit 3ab6c0c5ba
2 changed files with 7 additions and 6 deletions
+3
View File
@@ -16,10 +16,13 @@ class Sound : public Resource
public:
ALuint Buffer() { return m_Buffer; };
std::string Path() { return m_Path; };
float Gain() { return m_Gain; };
void SetGain(const float Gain) { m_Gain = Gain; };
private:
Sound(std::string path);
float m_Gain = 1;
ALuint m_Buffer;
std::string m_Path;
+4 -6
View File
@@ -81,6 +81,7 @@ bool dd::Systems::SoundSystem::OnPlaySound(const dd::Events::PlaySound &event)
ALuint source = CreateSource();
ALuint buffer = sound->Buffer();
alSourcei(source, AL_BUFFER, buffer);
sound->SetGain(event.Gain);
//Sound settings
float relativeVolume = 1.f;
@@ -97,10 +98,9 @@ bool dd::Systems::SoundSystem::OnPlaySound(const dd::Events::PlaySound &event)
relativeVolume = m_SFXMasterVolume;
}
alSourcef(source, AL_GAIN, (event.Gain * relativeVolume));
alSourcef(source, AL_GAIN, (sound->Gain() * relativeVolume));
alSourcef(source, AL_PITCH, event.Pitch);
//Play
alSourcePlay(source);
return true;
@@ -133,13 +133,11 @@ bool dd::Systems::SoundSystem::OnStopSound(const dd::Events::StopSound &event)
bool dd::Systems::SoundSystem::OnMasterVolume(const dd::Events::MasterVolume &event)
{
//TODO: Make the Gain depend on the value given when stored.
//TODO: .. now it ONLY uses the master Gain
if (event.IsAmbient) {
m_BGMMasterVolume = event.Gain;
for (auto& item : m_BGMSourcesToBuffers)
{
alSourcef(item.first, AL_GAIN, event.Gain);
alSourcef(item.first, AL_GAIN, (item.second->Gain() * m_BGMMasterVolume));
}
return true;
}
@@ -147,7 +145,7 @@ bool dd::Systems::SoundSystem::OnMasterVolume(const dd::Events::MasterVolume &ev
m_SFXMasterVolume = event.Gain;
for (auto& item : m_SFXSourcesToBuffers)
{
alSourcef(item.first, AL_GAIN, event.Gain);
alSourcef(item.first, AL_GAIN, (item.second->Gain() * m_SFXMasterVolume));
}
return true;
}