diff --git a/lib/bsp_loader/src/bsp.rs b/lib/bsp_loader/src/bsp.rs index 4a32be2..85f141e 100644 --- a/lib/bsp_loader/src/bsp.rs +++ b/lib/bsp_loader/src/bsp.rs @@ -124,27 +124,21 @@ pub fn convert<'a>( for brush in &bsp.brushes{ let brush_start_idx=brush.brush_side as usize; if let Some(sides)=bsp.brush_sides.get(brush_start_idx..brush_start_idx+brush.num_brush_sides as usize){ - let mut mb=model::MeshBuilder::new(); - let color=mb.acquire_color_id(glam::Vec4::ONE); - let tex=mb.acquire_tex_id(glam::Vec2::ZERO); - let mut polygon_list=Vec::new(); - for side in sides{ - if let Some(displacement)=bsp.displacement(side.displacement_info as usize){ - if let Some(face)=displacement.face(){ - let normal=mb.acquire_normal_id(valve_transform(face.normal().into())); - polygon_list.push(face.vertex_positions().map(|vertex_pos|{ - let pos=mb.acquire_pos_id(valve_transform(vertex_pos.into())); - mb.acquire_vertex_id(model::IndexedVertex{ - pos, - tex, - normal, - color, - }) - }).collect()); + let maybe_plane_list:Option<Vec<_>>=sides.iter().map(|side|bsp.plane(side.plane as usize)).collect(); + if let Some(plane_list)=maybe_plane_list{ + let mut polygon_list=Vec::new(); + let mut mb=model::MeshBuilder::new(); + let color=mb.acquire_color_id(glam::Vec4::ONE); + let tex=mb.acquire_tex_id(glam::Vec2::ZERO); + + for (i0,plane0) in plane_list.iter().enumerate().skip(2){ + for (i1,plane1) in plane_list.iter().enumerate().take(i0){ + for (i2,plane2) in plane_list.iter().enumerate().take(i1){ + //TODO + } } } - } - if !polygon_list.is_empty(){ + let polygon_groups=model::PolygonGroup::PolygonList(model::PolygonList::new(polygon_list)); let physics_groups=vec![model::IndexedPhysicsGroup{ groups:vec![model::PolygonGroupId::new(0)],