use anyhow::Result; use bevy_asset::AssetLoader; use std::{sync::Arc, path::Path}; #[derive(Clone)] pub struct AudioSource { pub bytes: Arc>, } impl AsRef<[u8]> for AudioSource { fn as_ref(&self) -> &[u8] { &self.bytes } } #[derive(Default)] pub struct Mp3Loader; impl AssetLoader for Mp3Loader { fn from_bytes(&self, _asset_path: &Path, bytes: Vec) -> Result { Ok(AudioSource { bytes: Arc::new(bytes) }) } fn extensions(&self) -> &[&str] { static EXTENSIONS: &[&str] = &["mp3"]; EXTENSIONS } }