Skip to content

Instantly share code, notes, and snippets.

@kabergstrom
Created August 21, 2019 19:15
Show Gist options
  • Save kabergstrom/71178adfeaafe9e013961beecc5f7aa5 to your computer and use it in GitHub Desktop.
Save kabergstrom/71178adfeaafe9e013961beecc5f7aa5 to your computer and use it in GitHub Desktop.
use crate::experimental::{Loader, DefaultLoader};
use amethyst_error::Error;
use amethyst_core::{
ecs::prelude::{Component, RunNow, DispatcherBuilder, World, WorldExt},
SystemBundle, SystemDesc,
};
struct LoaderSystem;
impl<'a> RunNow<'a> for LoaderSystem {
fn setup(&mut self, _world: &mut World) {
// LoaderSystem is set up in LoaderBundle since it needs access to DispatcherBuilder too.
}
fn run_now(&mut self, world: &'a World) {
let mut loader = world.write_resource::<DefaultLoader>();
loader.process(world).expect("Error in Loader processing");
}
}
pub struct LoaderBundle;
impl SystemBundle<'static, 'static> for LoaderBundle {
fn build(
self,
world: &mut World,
builder: &mut DispatcherBuilder<'static, 'static>,
) -> Result<(), Error> {
let mut loader = DefaultLoader::default();
loader.init_world(world);
loader.init_dispatcher(builder);
world.insert(loader);
Ok(())
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment