#![doc = r#"
Module for the [`MidiPlugin`]
"#]
use bevy::prelude::*;
use crate::{input::MidiInputPlugin, output::MidiOutputPlugin, synth::SynthPlugin};
pub struct MidiPlugin {
pub output: Option<MidiOutputPlugin>,
pub input: Option<MidiInputPlugin>,
pub synth: Option<SynthPlugin>,
}
impl Default for MidiPlugin {
fn default() -> Self {
Self {
output: None,
input: Some(MidiInputPlugin::default()),
synth: Some(SynthPlugin::default()),
}
}
}
impl Plugin for MidiPlugin {
fn build(&self, app: &mut App) {
if let Some(input) = self.input {
app.add_plugins(input);
}
if let Some(output) = self.output {
app.add_plugins(output);
}
if let Some(synth_plugin) = self.synth {
app.add_plugins(synth_plugin);
}
}
}