Compare commits

...

2 Commits

View File

@@ -204,6 +204,7 @@ pub enum BrushToMeshError{
count:usize,
},
InvalidPlanes(PlanesToFacesError),
SkipBecauseTexture,
}
impl std::fmt::Display for BrushToMeshError{
fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{
@@ -245,7 +246,16 @@ pub fn brush_to_mesh(bsp:&vbsp::Bsp,brush:&vbsp::Brush)->Result<model::Mesh,Brus
let brush_start_idx=brush.brush_side as usize;
let sides_range=brush_start_idx..brush_start_idx+brush.num_brush_sides as usize;
let sides=bsp.brush_sides.get(sides_range).ok_or(BrushToMeshError::SliceBrushSides)?;
let face_list=sides.iter().map(|side|{
for side in sides{
if let Some(texture_info)=bsp.textures_info.get(side.texture_info as usize){
let texture_info=vbsp::Handle::new(bsp,texture_info);
let s=texture_info.name();
if s.starts_with("tools/")||s.starts_with("TOOLS/"){
return Err(BrushToMeshError::SkipBecauseTexture);
}
}
}
let face_list=sides.iter().filter(|side|side.bevel==0).map(|side|{
let plane=bsp.plane(side.plane as usize)?;
Some(Face{
normal:valve_transform_normal(plane.normal.into()),