Skip to content
Snippets Groups Projects
lib.rs 1.15 KiB
Newer Older
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);
	}
}