From 87a8f7cdc5d20f8cc272247279d219054ad49855 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sat, 29 Nov 2025 11:54:41 -0600 Subject: [PATCH] feat(sound): add SESound::GetChannelGroupVolume --- src/sound/SESound.cpp | 18 ++++++++++++++++++ src/sound/SESound.hpp | 1 + 2 files changed, 19 insertions(+) diff --git a/src/sound/SESound.cpp b/src/sound/SESound.cpp index 861a794..9dcec27 100644 --- a/src/sound/SESound.cpp +++ b/src/sound/SESound.cpp @@ -225,6 +225,24 @@ SEChannelGroup* SESound::GetChannelGroup(const char* name, bool create, bool cre return nullptr; } +float SESound::GetChannelGroupVolume(const char* name) { + if (!SESound::s_Initialized) { + return 0.0f; + } + + if (!name) { + return 0.0f; + } + + auto channelGroup = SESound::GetChannelGroup(name, false, false); + + if (!channelGroup) { + return 0.0f; + } + + return channelGroup->m_volume * channelGroup->m_muteVolume; +} + int32_t SESound::Heartbeat(const void* data, void* param) { if (!SESound::s_Initialized) { SESound::s_pGameSystem->update(); diff --git a/src/sound/SESound.hpp b/src/sound/SESound.hpp index 5253a42..759e570 100644 --- a/src/sound/SESound.hpp +++ b/src/sound/SESound.hpp @@ -32,6 +32,7 @@ class SESound { // Public static functions static FMOD::SoundGroup* CreateSoundGroup(const char* name, int32_t maxAudible); static SEChannelGroup* GetChannelGroup(const char* name, bool create, bool createInMaster); + static float GetChannelGroupVolume(const char* name); static int32_t Heartbeat(const void* data, void* param); static void Init(int32_t maxChannels, int32_t (*a2), int32_t enableReverb, int32_t enableSoftwareHRTF, int32_t* numChannels, int32_t* outputDriverIndex, const char* outputDriverName, void (*a8), int32_t a9); static int32_t IsInitialized();