diff --git a/include/GEngine/libdev/components/driver/output/Sound.hpp b/include/GEngine/libdev/components/driver/output/Sound.hpp index 78bc001..95a39ab 100644 --- a/include/GEngine/libdev/components/driver/output/Sound.hpp +++ b/include/GEngine/libdev/components/driver/output/Sound.hpp @@ -25,9 +25,9 @@ struct Sound : public gengine::Component { struct Music : public gengine::Component { bool pause = false; std::uint64_t musicId; - float volume; + uint16_t volume; - Music(std::uint64_t musicId, float volume = 1) + Music(std::uint64_t musicId, uint16_t volume = UINT16_MAX) : musicId(musicId) , volume(volume) { } diff --git a/include/GEngine/libdev/systems/driver/output/AudioManager.hpp b/include/GEngine/libdev/systems/driver/output/AudioManager.hpp index 4da01ba..7446783 100644 --- a/include/GEngine/libdev/systems/driver/output/AudioManager.hpp +++ b/include/GEngine/libdev/systems/driver/output/AudioManager.hpp @@ -56,13 +56,12 @@ class AudioManager void onMusic(gengine::system::event::driver::output::Music &e) { auto &musics = getComponents(); auto &netSends = getComponents(); - - if (!musics.size()) - spawnEntity(gengine::component::driver::output::Music(getMusicIdByPath(e.path)), + if (!musics.size()) { + spawnEntity(gengine::component::driver::output::Music(getMusicIdByPath(e.path), e.volume * UINT16_MAX), geg::component::network::NetSend()); - else { + } else { getMusicComponent().musicId = getMusicIdByPath(e.path); - getMusicComponent().volume = e.volume; + getMusicComponent().volume = e.volume * UINT16_MAX; for (auto [e, _unused, netSend] : gengine::Zip(musics, netSends)) { netSend.update(); break; diff --git a/source/GEngine/libdev/systems/driver/output/AudioManager.cpp b/source/GEngine/libdev/systems/driver/output/AudioManager.cpp index c26e404..096b61b 100644 --- a/source/GEngine/libdev/systems/driver/output/AudioManager.cpp +++ b/source/GEngine/libdev/systems/driver/output/AudioManager.cpp @@ -68,7 +68,7 @@ void AudioManager::onMainLoop(geg::event::RenderLoop &e) { StopMusicStream(getMusicById(m_currentMusicId)); m_currentMusicId = music.musicId; PlayMusicStream(getMusicById(m_currentMusicId)); - SetMusicVolume(getMusicById(m_currentMusicId), music.volume); + SetMusicVolume(getMusicById(m_currentMusicId), float(music.volume) / UINT16_MAX); } } @@ -95,10 +95,10 @@ void AudioManager::onMainLoop(geg::event::RenderLoop &e) { gengine::component::driver::output::Music &AudioManager::getMusicComponent(void) { auto &musics = getComponents(); - if (!musics.size()) - THROW_WARNING("Music component not initilazed"); for (auto &[_, m] : musics) return m; + + THROW_WARNING("Music component not initilazed"); } void AudioManager::onSoundPlayed(