diff --git a/include/Cubed/audio/audio_source.hpp b/include/Cubed/audio/audio_source.hpp index b95b5b0..8e08f76 100644 --- a/include/Cubed/audio/audio_source.hpp +++ b/include/Cubed/audio/audio_source.hpp @@ -17,7 +17,7 @@ public: void set_buffer_3d(const AudioBuffer& buffer, const glm::vec3& vec3); void set_loop(bool on = true); void set_volume(float volume); - + void set_pitch(float pitch); void play(); void play_2d(const AudioBuffer& buffer); void play_3d(const AudioBuffer& buffer, const glm::vec3& pos); diff --git a/src/audio/audio_engine.cpp b/src/audio/audio_engine.cpp index 9dd8040..4a9dd1d 100644 --- a/src/audio/audio_engine.cpp +++ b/src/audio/audio_engine.cpp @@ -6,6 +6,7 @@ #include "Cubed/tools/log.hpp" #include + namespace Cubed { AudioEngine::AudioEngine() {}; @@ -194,12 +195,14 @@ void AudioEngine::underwater_change(bool underwater) { for (auto& source : m_pool->sources()) { if (m_underwater) { source.set_filter(*m_low_pass_filter); + } else { source.clear_filter(); } } if (underwater) { m_bgm->set_filter(*m_low_pass_filter); + } else { m_bgm->clear_filter(); } diff --git a/src/audio/audio_source.cpp b/src/audio/audio_source.cpp index e869312..38756d4 100644 --- a/src/audio/audio_source.cpp +++ b/src/audio/audio_source.cpp @@ -74,6 +74,11 @@ void AudioSource::set_volume(float volume) { alSourcef(m_source, AL_GAIN, volume); } +void AudioSource::set_pitch(float pitch) { + pitch = std::clamp(pitch, 0.0f, 1.0f); + alSourcef(m_source, AL_PITCH, pitch); +} + void AudioSource::play() { alSourcePlay(m_source); } void AudioSource::play_2d(const AudioBuffer& buffer) {