use crate::prelude::{AudioListener, AudioSource, Velocity};
use bevy::prelude::{Bundle, Transform};
use libfmod::{EventDescription, StopMode};
#[derive(Bundle)]
pub struct SpatialAudioBundle {
audio_source: AudioSource,
velocity: Velocity,
transform: Transform,
}
impl SpatialAudioBundle {
pub fn new(event_description: EventDescription) -> crate::Result<Self> {
Ok(SpatialAudioBundle {
audio_source: AudioSource {
event_instance: event_description.create_instance()?,
despawn_stop_mode: StopMode::AllowFadeout,
},
velocity: Velocity::default(),
transform: Transform::default(),
})
}
}
impl From<AudioSource> for SpatialAudioBundle {
fn from(value: AudioSource) -> Self {
SpatialAudioBundle {
audio_source: value,
velocity: Velocity::default(),
transform: Transform::default(),
}
}
}
#[derive(Bundle, Default)]
pub struct SpatialListenerBundle {
audio_listener: AudioListener,
velocity: Velocity,
transform: Transform,
}