diff --git a/map-tool/src/source.rs b/map-tool/src/source.rs index fc0ff51..fa481ec 100644 --- a/map-tool/src/source.rs +++ b/map-tool/src/source.rs @@ -178,25 +178,41 @@ fn load_texture<'bsp,'vpk,'a>(finder:BspFinder<'bsp,'vpk>,texture_name:&str)->Re // search for both vmt,vtf let mut texture_file_name_vmt=texture_file_name.clone(); texture_file_name_vmt.set_extension("vmt"); - let vmt_result=recursive_vmt_loader(finder,get_vmt(finder,texture_file_name_vmt.to_str().unwrap())?); - match vmt_result{ - Ok(Some(stuff))=>return Ok(Some(stuff)), - Ok(None) - |Err(LoadVMTError::NotFound)=>(), - |Err(LoadVMTError::GetVMT(GetVMTError::NotFound))=>(), - Err(e)=>return Err(e), + + let get_vmt_result=get_vmt(finder,texture_file_name_vmt.to_str().unwrap()); + match get_vmt_result{ + Ok(material)=>{ + let vmt_result=recursive_vmt_loader(finder,material); + match vmt_result{ + Ok(Some(stuff))=>return Ok(Some(stuff)), + Ok(None) + |Err(LoadVMTError::NotFound)=>(), + |Err(LoadVMTError::GetVMT(GetVMTError::NotFound))=>(), + Err(e)=>return Err(e), + } + } + |Err(GetVMTError::NotFound)=>(), + Err(e)=>Err(e)?, } // try looking for vtf let mut texture_file_name_vtf=texture_file_name.clone(); texture_file_name_vtf.set_extension("vtf"); - let vtf_result=recursive_vmt_loader(finder,get_vmt(finder,texture_file_name_vtf.to_str().unwrap())?); - match vtf_result{ - Ok(Some(stuff))=>return Ok(Some(stuff)), - Ok(None) - |Err(LoadVMTError::NotFound)=>(), - |Err(LoadVMTError::GetVMT(GetVMTError::NotFound))=>(), - Err(e)=>return Err(e), + + let get_vtf_result=get_vmt(finder,texture_file_name_vtf.to_str().unwrap()); + match get_vtf_result{ + Ok(material)=>{ + let vtf_result=recursive_vmt_loader(finder,material); + match vtf_result{ + Ok(Some(stuff))=>return Ok(Some(stuff)), + Ok(None) + |Err(LoadVMTError::NotFound)=>(), + |Err(LoadVMTError::GetVMT(GetVMTError::NotFound))=>(), + Err(e)=>return Err(e), + } + } + |Err(GetVMTError::NotFound)=>(), + Err(e)=>Err(e)?, } Ok(None)