Skip to content

Commit 01721e6

Browse files
committed
hotfix AudioManager: float conversion and transmission through network lost volume data
1 parent 0f3061f commit 01721e6

3 files changed

Lines changed: 11 additions & 11 deletions

File tree

include/GEngine/libdev/components/driver/output/Sound.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ struct Sound : public gengine::Component<Sound> {
2525
struct Music : public gengine::Component<Music> {
2626
bool pause = false;
2727
std::uint64_t musicId;
28-
float volume;
28+
uint16_t volume;
2929

30-
Music(std::uint64_t musicId, float volume = 1)
30+
Music(std::uint64_t musicId, uint16_t volume = UINT16_MAX)
3131
: musicId(musicId)
3232
, volume(volume) {
3333
}

include/GEngine/libdev/systems/driver/output/AudioManager.hpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,12 @@ class AudioManager
5656
void onMusic(gengine::system::event::driver::output::Music &e) {
5757
auto &musics = getComponents<gengine::component::driver::output::Music>();
5858
auto &netSends = getComponents<geg::component::network::NetSend>();
59-
60-
if (!musics.size())
61-
spawnEntity(gengine::component::driver::output::Music(getMusicIdByPath(e.path)),
59+
if (!musics.size()) {
60+
spawnEntity(gengine::component::driver::output::Music(getMusicIdByPath(e.path), e.volume * UINT16_MAX),
6261
geg::component::network::NetSend());
63-
else {
62+
} else {
6463
getMusicComponent().musicId = getMusicIdByPath(e.path);
65-
getMusicComponent().volume = e.volume;
64+
getMusicComponent().volume = e.volume * UINT16_MAX;
6665
for (auto [e, _unused, netSend] : gengine::Zip(musics, netSends)) {
6766
netSend.update();
6867
break;

source/GEngine/libdev/systems/driver/output/AudioManager.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,13 @@ void AudioManager::onMainLoop(geg::event::RenderLoop &e) {
6868
StopMusicStream(getMusicById(m_currentMusicId));
6969
m_currentMusicId = music.musicId;
7070
PlayMusicStream(getMusicById(m_currentMusicId));
71-
SetMusicVolume(getMusicById(m_currentMusicId), music.volume);
71+
SetMusicVolume(getMusicById(m_currentMusicId), float(music.volume) / UINT16_MAX);
7272
}
7373
}
7474

75-
if (m_currentMusicId)
75+
if (m_currentMusicId) {
7676
UpdateMusicStream(getMusicById(m_currentMusicId));
77+
}
7778

7879
static std::set<gengine::Entity> m_soundsPlayed;
7980

@@ -95,10 +96,10 @@ void AudioManager::onMainLoop(geg::event::RenderLoop &e) {
9596
gengine::component::driver::output::Music &AudioManager::getMusicComponent(void) {
9697
auto &musics = getComponents<gengine::component::driver::output::Music>();
9798

98-
if (!musics.size())
99-
THROW_WARNING("Music component not initilazed");
10099
for (auto &[_, m] : musics)
101100
return m;
101+
102+
THROW_WARNING("Music component not initilazed");
102103
}
103104

104105
void AudioManager::onSoundPlayed(

0 commit comments

Comments
 (0)