From dbbcf53471200b7f263a1b89aecc24305127233e Mon Sep 17 00:00:00 2001 From: Louis Capitanchik <contact@louiscap.co> Date: Tue, 16 Aug 2022 03:06:09 +0100 Subject: [PATCH] Fix settings sync overflow --- Cargo.toml | 2 +- src/music_box.rs | 28 +++++++++++++++------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index fd9740d..c6dea6f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "micro_musicbox" -version = "0.3.1" +version = "0.3.2" edition = "2021" license = "Apache-2.0" authors = ["Louis Capitanchik <louis@microhacks.co.uk>"] diff --git a/src/music_box.rs b/src/music_box.rs index 1d7c748..2a410f4 100644 --- a/src/music_box.rs +++ b/src/music_box.rs @@ -1,7 +1,7 @@ use std::marker::PhantomData; use bevy::ecs::system::SystemParam; -use bevy::prelude::{Assets, Commands, Handle, Res, ResMut}; +use bevy::prelude::{Assets, Commands, DetectChanges, Handle, Res, ResMut}; use bevy_kira_audio::{AudioChannel, AudioControl, AudioInstance, AudioSource, AudioTween}; use crate::utilities::{AudioSettings, SuppliesAudio, TrackType}; @@ -247,18 +247,20 @@ impl<'w, 's, T: SuppliesAudio> MusicBox<'w, 's, T> { /// Sync the actual volumes of each track to their values defined in the `AudioSettings` resource, /// modulated by the master volume setting pub fn sync_settings(&self) { - self.channels - .music_channel - .set_volume((self.settings.music_volume * self.settings.master_volume) as f64); - self.channels - .ambiance_channel - .set_volume((self.settings.ambiance_volume * self.settings.master_volume) as f64); - self.channels - .sfx_channel - .set_volume((self.settings.sfx_volume * self.settings.master_volume) as f64); - self.channels - .ui_sfx_channel - .set_volume((self.settings.ui_volume * self.settings.master_volume) as f64); + if self.settings.is_changed() { + self.channels + .music_channel + .set_volume((self.settings.music_volume * self.settings.master_volume) as f64); + self.channels + .ambiance_channel + .set_volume((self.settings.ambiance_volume * self.settings.master_volume) as f64); + self.channels + .sfx_channel + .set_volume((self.settings.sfx_volume * self.settings.master_volume) as f64); + self.channels + .ui_sfx_channel + .set_volume((self.settings.ui_volume * self.settings.master_volume) as f64); + } } /// Get a reference to the settings object -- GitLab