use bevy::app::{App, Plugin, PluginGroup, PluginGroupBuilder}; use bevy_kira_audio::{AudioApp, AudioPlugin}; use crate::channels::{ AmbianceAudioChannelA, AmbianceAudioChannelB, MusicAudioChannelA, MusicAudioChannelB, SfxAudioChannel, UiSfxAudioChannel, }; use crate::utilities::{AudioCrossFade, AudioSettings}; pub mod channels; pub mod music_box; pub mod utilities; pub mod prelude { pub use super::channels::*; pub use super::music_box::MusicBox; pub use bevy_kira_audio::{AudioSource, AudioChannel}; } pub struct MusicBoxPlugin; impl Plugin for MusicBoxPlugin { fn build(&self, app: &mut App) { app.add_audio_channel::<MusicAudioChannelA>() .add_audio_channel::<MusicAudioChannelB>() .add_audio_channel::<AmbianceAudioChannelA>() .add_audio_channel::<AmbianceAudioChannelB>() .add_audio_channel::<SfxAudioChannel>() .add_audio_channel::<UiSfxAudioChannel>() .insert_resource(AudioSettings::default()) .insert_resource(AudioCrossFade::default()); } } pub struct CombinedAudioPlugins; impl PluginGroup for CombinedAudioPlugins { fn build(&mut self, group: &mut PluginGroupBuilder) { group.add(AudioPlugin) .add(MusicBoxPlugin); } }