diff --git a/Cargo.toml b/Cargo.toml index fd9740dd5620e326e920a7e67bd121c375f8bfa9..c6dea6f23fb0553a99b3697f9589e94224a31415 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 1d7c74824d585d32602f90bc692ba2f9e4336a81..2a410f44f80781380ceba30655854080d1f21934 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