split bsp model loader into 2 stages
This commit is contained in:
parent
6df5ee1af3
commit
f3d7d9b49f
@ -87,10 +87,10 @@ impl MeshLoader<'_,'_>{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl<'a> Loader<Mesh> for MeshLoader<'a,'_>{
|
impl<'a> Loader<vmdl::Model> for MeshLoader<'a,'_>{
|
||||||
type Error=MeshError;
|
type Error=MeshError;
|
||||||
type Index=&'a str;
|
type Index=&'a str;
|
||||||
fn load(&mut self,index:Self::Index)->Result<Mesh,Self::Error>{
|
fn load(&mut self,index:Self::Index)->Result<vmdl::Model,Self::Error>{
|
||||||
let mdl_path_lower=index.to_lowercase();
|
let mdl_path_lower=index.to_lowercase();
|
||||||
//.mdl, .vvd, .dx90.vtx
|
//.mdl, .vvd, .dx90.vtx
|
||||||
let path=std::path::PathBuf::from(mdl_path_lower.as_str());
|
let path=std::path::PathBuf::from(mdl_path_lower.as_str());
|
||||||
@ -103,11 +103,19 @@ impl<'a> Loader<Mesh> for MeshLoader<'a,'_>{
|
|||||||
let mdl=bsp.pack.get(mdl_path_lower.as_str())?.ok_or(MeshError::MissingMdl)?;
|
let mdl=bsp.pack.get(mdl_path_lower.as_str())?.ok_or(MeshError::MissingMdl)?;
|
||||||
let vtx=bsp.pack.get(vtx_path.as_os_str().to_str().unwrap())?.ok_or(MeshError::MissingVtx)?;
|
let vtx=bsp.pack.get(vtx_path.as_os_str().to_str().unwrap())?.ok_or(MeshError::MissingVtx)?;
|
||||||
let vvd=bsp.pack.get(vvd_path.as_os_str().to_str().unwrap())?.ok_or(MeshError::MissingVvd)?;
|
let vvd=bsp.pack.get(vvd_path.as_os_str().to_str().unwrap())?.ok_or(MeshError::MissingVvd)?;
|
||||||
let model=vmdl::Model::from_parts(
|
Ok(vmdl::Model::from_parts(
|
||||||
vmdl::mdl::Mdl::read(mdl.as_ref())?,
|
vmdl::mdl::Mdl::read(mdl.as_ref())?,
|
||||||
vmdl::vtx::Vtx::read(vtx.as_ref())?,
|
vmdl::vtx::Vtx::read(vtx.as_ref())?,
|
||||||
vmdl::vvd::Vvd::read(vvd.as_ref())?,
|
vmdl::vvd::Vvd::read(vvd.as_ref())?,
|
||||||
);
|
))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> Loader<Mesh> for MeshLoader<'a,'_>{
|
||||||
|
type Error=MeshError;
|
||||||
|
type Index=&'a str;
|
||||||
|
fn load(&mut self,index:Self::Index)->Result<Mesh,Self::Error>{
|
||||||
|
let model=self.load(index)?;
|
||||||
let mesh=crate::mesh::convert_mesh(model,&mut self.deferred_loader);
|
let mesh=crate::mesh::convert_mesh(model,&mut self.deferred_loader);
|
||||||
Ok(mesh)
|
Ok(mesh)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user