1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use std::marker::PhantomData;
use shred::SetupHandler;
use specs::{Resources, SystemData, Tracked, WriteStorage};
use super::{Parent, SceneGraph};
#[derive(Debug, Default)]
pub struct SceneGraphSetupHandler<P>(PhantomData<P>);
impl<P> SetupHandler<SceneGraph<P>> for SceneGraphSetupHandler<P>
where
P: Parent,
P::Storage: Default + Tracked,
{
#[inline]
fn setup(res: &mut Resources) {
if !res.has_value::<SceneGraph<P>>() {
let scene_graph = {
let mut storage: WriteStorage<P> = SystemData::fetch(&res);
SceneGraph::<P>::new(storage.register_reader())
};
res.insert(scene_graph);
}
}
}