on a better track

This commit is contained in:
Quaternions 2024-03-12 20:31:30 -07:00
parent b14d5a7e56
commit 3784f5aacf
2 changed files with 11 additions and 7 deletions

View File

@ -10,7 +10,7 @@ pub mod data{
pub fn new(bytes:Vec<u8>)->Self{ pub fn new(bytes:Vec<u8>)->Self{
Self(bytes) Self(bytes)
} }
pub fn cursor(self)->std::io::Cursor<Vec<u8>>{ pub(crate) fn cursor(self)->std::io::Cursor<Vec<u8>>{
std::io::Cursor::new(self.0) std::io::Cursor::new(self.0)
} }
} }

View File

@ -751,16 +751,20 @@ impl PartialMap1{
//decode roblox meshes //decode roblox meshes
//generate mesh_id_map based on meshes that failed to load //generate mesh_id_map based on meshes that failed to load
let (meshes,mesh_id_map):(Vec<model::Mesh>,HashMap<model::MeshId,model::MeshId>)= let loaded_meshes:HashMap<model::MeshId,model::Mesh>=
meshpart_meshes.into_iter().flat_map(|(old_mesh_id,roblox_mesh_bytes)| meshpart_meshes.into_iter().flat_map(|(old_mesh_id,roblox_mesh_bytes)|
Ok((old_mesh_id,crate::mesh::convert(roblox_mesh_bytes)?)) match crate::mesh::convert(roblox_mesh_bytes){
).enumerate().map(|(new_mesh_id,(old_mesh_id,mesh))| Ok(mesh)=>Some((old_mesh_id,mesh)),
(mesh,(old_mesh_id,model::MeshId::new(new_mesh_id as u32))) Err(e)=>{
).unzip(); println!("Error converting mesh: {e:?}");
None
},
}
).collect();
//now that the meshes are loaded, these models can be generated //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 models_owned_attributes=self.deferred_models_deferred_attributes.into_iter().map(|deferred_model_deferred_attributes|{
let render=deferred_model_deferred_attributes.render; 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 //insert into primitive_meshes
ModelDeferredAttributes{ ModelDeferredAttributes{
mesh:deferred_model_deferred_attributes.model.mesh, mesh:deferred_model_deferred_attributes.model.mesh,