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