From 62680b3b90d847dce9228905b15881e2d48e7694 Mon Sep 17 00:00:00 2001 From: Elijah Voigt Date: Mon, 14 Oct 2024 20:01:36 -0700 Subject: [PATCH] saving my place --- src/parser.rs | 16 +++++++++++++++- src/save.rs | 3 +++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/parser.rs b/src/parser.rs index 83b0794..2daf1e9 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -311,7 +311,21 @@ impl Component for SaveModel { const STORAGE_TYPE: StorageType = StorageType::Table; fn register_component_hooks(hooks: &mut ComponentHooks) { - todo!("Assign Scene Handle for SaveModel") + // Assign Scene Handle for SaveModel + hooks.on_add(|mut world, entity, _component_id| { + todo!("Need to load gltf_file as a dependent resource of this entity"); + let server = world.resource::(); + let save_model = world.get::(entity).unwrap(); + let gltf_handle = server.get_handle(save_model.gltf_file.clone()).unwrap(); + let gltfs = world.resource::>(); + let gltf = gltfs.get(&gltf_handle).unwrap(); + let scene_handle = gltf + .named_scenes + .get(&save_model.scene_name.clone().into_boxed_str()) + .unwrap() + .clone(); + world.commands().entity(entity).insert(scene_handle); + }); } } diff --git a/src/save.rs b/src/save.rs index a90efc7..c3ada46 100644 --- a/src/save.rs +++ b/src/save.rs @@ -84,6 +84,9 @@ impl SaveEntity { } else { // Run line against all parsers for f in fns { + // TODO!! + // Need to return an Option from `f(...)` that is loaded as a + // dependent resource for this entity if let Ok(p) = f(&tokens) { p.iter().for_each(|c| { // Bundle the Type ID with this entry for auditing purposes