From 998766b004398312a3a7ebb01e745e73354d3c25 Mon Sep 17 00:00:00 2001 From: tovjemam Date: Mon, 22 Jun 2026 19:51:32 +0200 Subject: [PATCH] Add advances sound parameters --- src/audio/sound.cpp | 12 ++++++++++++ src/audio/sound.hpp | 8 ++++++++ src/audio/sound_source.cpp | 5 +++++ 3 files changed, 25 insertions(+) diff --git a/src/audio/sound.cpp b/src/audio/sound.cpp index bf97c84..f2ff744 100644 --- a/src/audio/sound.cpp +++ b/src/audio/sound.cpp @@ -50,6 +50,18 @@ std::shared_ptr audio::Sound::LoadFromFile(const std::string { iss >> sound->pitch_; } + else if (cmd == "refdistance") + { + iss >> sound->ref_distance_; + } + else if (cmd == "rolloff") + { + iss >> sound->rolloff_ractor_; + } + else if (cmd == "maxdistance") + { + iss >> sound->max_distance_; + } }); if (sound->category_name_.empty()) diff --git a/src/audio/sound.hpp b/src/audio/sound.hpp index 7719736..c4e7d29 100644 --- a/src/audio/sound.hpp +++ b/src/audio/sound.hpp @@ -20,6 +20,10 @@ public: float GetVolume() const { return volume_; } float GetPitch() const { return pitch_; } + float GetRefDistance() const { return ref_distance_; } + float GetRolloffFactor() const { return rolloff_ractor_; } + float GetMaxDistance() const { return max_distance_; } + ~Sound(); private: @@ -29,6 +33,10 @@ private: float volume_ = 1.0f; float pitch_ = 1.0f; + + float ref_distance_ = 1.0f; + float rolloff_ractor_= 1.0f; + float max_distance_ = 200.0f; }; } // namespace audio \ No newline at end of file diff --git a/src/audio/sound_source.cpp b/src/audio/sound_source.cpp index 47d5ae5..4c84efe 100644 --- a/src/audio/sound_source.cpp +++ b/src/audio/sound_source.cpp @@ -12,6 +12,11 @@ audio::SoundSource::SoundSource(Player* player, std::shared_ptr sou SetPitch(1.0f); alSourcei(source_, AL_BUFFER, sound_->GetBufferId()); + + // params + alSourcef(source_, AL_REFERENCE_DISTANCE, sound_->GetRefDistance()); + alSourcef(source_, AL_ROLLOFF_FACTOR, sound_->GetRolloffFactor()); + alSourcef(source_, AL_MAX_DISTANCE, sound_->GetMaxDistance()); } void audio::SoundSource::SetLooping(bool looping)