use bevy::{ecs::component::Component, transform::components::Transform}; use crate::FelixAudioComponent; pub mod stream_source; pub mod static_source; #[derive(Component)] pub struct FelixAudioSource{ inner: Box } impl FelixAudioSource{ pub fn init( &mut self, audio_system: &mut FelixAudioComponent ){ self.inner.init(audio_system); } pub fn needs_init( &self ) -> bool{ self.inner.needs_init() } pub fn update( &mut self, transform: &Transform ){ self.inner.update(transform); } } impl From for FelixAudioSource where T: AudioSource + Send + Sync + 'static { fn from(value: T) -> Self { Self { inner: Box::new(value) } } } pub trait AudioSource{ fn init( &mut self, audio_system: &mut FelixAudioComponent ); fn needs_init( &self ) -> bool; fn update( &mut self, transform: &Transform ); }