From cd1a3d8b1500d213060c50ee5be790c5ef336ecb Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Fri, 27 Feb 2026 09:36:22 -0800 Subject: [PATCH] common: model: remove empty vertex lists in MeshBuilder::build --- lib/common/src/model.rs | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/lib/common/src/model.rs b/lib/common/src/model.rs index 3aecd7ea..a0dfdaf6 100644 --- a/lib/common/src/model.rs +++ b/lib/common/src/model.rs @@ -144,10 +144,38 @@ impl MeshBuilder{ } pub fn build( self, - polygon_groups:Vec, - graphics_groups:Vec, - physics_groups:Vec, + mut polygon_groups:Vec, + mut graphics_groups:Vec, + mut physics_groups:Vec, )->Mesh{ + let mut id=0; + let mut map=Vec::new(); + polygon_groups.retain(|group|{ + let keep=match group{ + PolygonGroup::PolygonList(polygon_list)=>!polygon_list.0.is_empty(), + }; + if keep{ + map.push(Some(PolygonGroupId::new(id))); + id+=1; + }else{ + map.push(None); + } + !keep + }); + for group in &mut graphics_groups{ + // drop empty groups + group.groups.retain(|polygon_group_id|map[polygon_group_id.get() as usize].is_some()); + for polygon_group_id in &mut group.groups{ + *polygon_group_id=map[polygon_group_id.get() as usize].unwrap(); + } + } + for group in &mut physics_groups{ + // drop empty groups + group.groups.retain(|polygon_group_id|map[polygon_group_id.get() as usize].is_some()); + for polygon_group_id in &mut group.groups{ + *polygon_group_id=map[polygon_group_id.get() as usize].unwrap(); + } + } let MeshBuilder{ unique_pos, unique_normal,