diff --git a/src/rbx.rs b/src/rbx.rs index 4086555..ae15c50 100644 --- a/src/rbx.rs +++ b/src/rbx.rs @@ -750,13 +750,18 @@ impl PartialMap1{ let mut wormhole_id_to_out_model=HashMap::new(); //decode roblox meshes - //generate mesh_id map based on meshes that failed to load - let mut meshes=meshpart_meshes.into_iter().flat_map(|(old_mesh_id,roblox_mesh_bytes)|{ + //generate mesh_id_map based on meshes that failed to load + let (meshes,mesh_id_map):(Vec,HashMap)= + meshpart_meshes.into_iter().flat_map(|(old_mesh_id,roblox_mesh_bytes)| Ok((old_mesh_id,crate::mesh::convert(roblox_mesh_bytes)?)) - }).collect(); + ).enumerate().map(|(new_mesh_id,(old_mesh_id,mesh))| + (mesh,(old_mesh_id,model::MeshId::new(new_mesh_id as u32))) + ).unzip(); //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;//what does this do? + 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 + //insert into primitive_meshes ModelDeferredAttributes{ mesh:deferred_model_deferred_attributes.model.mesh, deferred_attributes:deferred_model_deferred_attributes.model.deferred_attributes,