diff --git a/src/source.rs b/src/source.rs index cd0af90..5fcecea 100644 --- a/src/source.rs +++ b/src/source.rs @@ -191,7 +191,7 @@ enum ExtractTextureError{ #[error("Load VMT error {0:?}")] LoadVMT(#[from]LoadVMTError), } -async fn gimme_them_textures(path:PathBuf,vpk_list:&[vpk::VPK],send_texture:tokio::sync::mpsc::Sender<(Vec<u8>,String)>)->Result<(),ExtractTextureError>{ +async fn gimme_them_textures(path:&Path,vpk_list:&[vpk::VPK],send_texture:tokio::sync::mpsc::Sender<(Vec<u8>,String)>)->Result<(),ExtractTextureError>{ let bsp=vbsp::Bsp::read(tokio::fs::read(path).await?.as_ref())?; let loader_bsp=strafesnet_bsp_loader::Bsp::new(bsp); let bsp=loader_bsp.as_ref(); @@ -214,7 +214,13 @@ async fn gimme_them_textures(path:PathBuf,vpk_list:&[vpk::VPK],send_texture:toki let mut mesh_loader=strafesnet_bsp_loader::loader::ModelLoader::new(finder); // load models and collect requested textures for model_path in mesh_deferred_loader.into_indices(){ - let model:vmdl::Model=mesh_loader.load(model_path)?; + let model:vmdl::Model=match mesh_loader.load(model_path){ + Ok(model)=>model, + Err(e)=>{ + println!("Model={model_path} Load model error: {e}"); + continue; + }, + }; for texture in model.textures(){ for search_path in &texture.search_paths{ let mut path=PathBuf::from(search_path.as_str()); @@ -231,7 +237,7 @@ async fn gimme_them_textures(path:PathBuf,vpk_list:&[vpk::VPK],send_texture:toki (texture.into_owned(),texture_path.into_owned()) ).await.unwrap(), Ok(None)=>(), - Err(e)=>println!("Load error: {e}"), + Err(e)=>println!("Texture={texture_path} Load error: {e}"), } } @@ -311,11 +317,11 @@ async fn extract_textures(paths:Vec<PathBuf>,vpk_paths:Vec<PathBuf>)->AResult<() while let (Ok(permit),Some(path))=(SEM.acquire().await,it.next()){ let send=send_texture.clone(); tokio::spawn(async move{ - let result=gimme_them_textures(path,vpk_list,send).await; + let result=gimme_them_textures(&path,vpk_list,send).await; drop(permit); match result{ Ok(())=>(), - Err(e)=>println!("Decode error: {e:?}"), + Err(e)=>println!("Map={path:?} Decode error: {e:?}"), } }); }