From 3784f5aacfcf8cfb519b337c895e5375ea626ce6 Mon Sep 17 00:00:00 2001 From: Quaternions Date: Tue, 12 Mar 2024 20:31:30 -0700 Subject: [PATCH] on a better track --- src/lib.rs | 2 +- src/rbx.rs | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index c932c58..c04c7d9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,7 +10,7 @@ pub mod data{ pub fn new(bytes:Vec)->Self{ Self(bytes) } - pub fn cursor(self)->std::io::Cursor>{ + pub(crate) fn cursor(self)->std::io::Cursor>{ std::io::Cursor::new(self.0) } } diff --git a/src/rbx.rs b/src/rbx.rs index ae15c50..89fe82c 100644 --- a/src/rbx.rs +++ b/src/rbx.rs @@ -751,16 +751,20 @@ impl PartialMap1{ //decode roblox meshes //generate mesh_id_map based on meshes that failed to load - let (meshes,mesh_id_map):(Vec,HashMap)= + let loaded_meshes:HashMap= meshpart_meshes.into_iter().flat_map(|(old_mesh_id,roblox_mesh_bytes)| - Ok((old_mesh_id,crate::mesh::convert(roblox_mesh_bytes)?)) - ).enumerate().map(|(new_mesh_id,(old_mesh_id,mesh))| - (mesh,(old_mesh_id,model::MeshId::new(new_mesh_id as u32))) - ).unzip(); + match crate::mesh::convert(roblox_mesh_bytes){ + Ok(mesh)=>Some((old_mesh_id,mesh)), + Err(e)=>{ + println!("Error converting mesh: {e:?}"); + None + }, + } + ).collect(); //now that the meshes are loaded, these models can be generated let models_owned_attributes=self.deferred_models_deferred_attributes.into_iter().map(|deferred_model_deferred_attributes|{ let render=deferred_model_deferred_attributes.render; - //meshes need to be cloned with a new id when they are reused with a new render_id + //meshes need to be cloned from loaded_meshes with a new id when they are used with a new render_id //insert into primitive_meshes ModelDeferredAttributes{ mesh:deferred_model_deferred_attributes.model.mesh,