use bevy::{
asset::io::{
memory::{Dir, MemoryAssetReader},
AssetSource, AssetSourceId,
},
prelude::*,
};
#[derive(Debug, Deref, DerefMut, Resource, Clone)]
pub struct MemoryDir {
pub source: &'static str,
#[deref]
pub dir: Dir,
}
impl Default for MemoryDir {
fn default() -> Self {
Self {
source: "memory",
dir: Dir::default(),
}
}
}
impl MemoryDir {
pub fn new(source_name: &'static str) -> MemoryDir {
Self {
source: source_name,
dir: Dir::default(),
}
}
}
impl Plugin for MemoryDir {
fn build(&self, app: &mut App) {
let reader = MemoryAssetReader {
root: self.dir.clone(),
};
app.register_asset_source(
AssetSourceId::from_static(self.source),
AssetSource::build().with_reader(move || Box::new(reader.clone())),
);
app.insert_resource(self.clone());
}
}