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 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();
|
||||
//.mdl, .vvd, .dx90.vtx
|
||||
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 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 model=vmdl::Model::from_parts(
|
||||
Ok(vmdl::Model::from_parts(
|
||||
vmdl::mdl::Mdl::read(mdl.as_ref())?,
|
||||
vmdl::vtx::Vtx::read(vtx.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);
|
||||
Ok(mesh)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user