Compare commits
1 Commits
refactor-l
...
zero-verti
| Author | SHA1 | Date | |
|---|---|---|---|
|
cd1a3d8b15
|
@@ -144,10 +144,38 @@ impl MeshBuilder{
|
||||
}
|
||||
pub fn build(
|
||||
self,
|
||||
polygon_groups:Vec<PolygonGroup>,
|
||||
graphics_groups:Vec<IndexedGraphicsGroup>,
|
||||
physics_groups:Vec<IndexedPhysicsGroup>,
|
||||
mut polygon_groups:Vec<PolygonGroup>,
|
||||
mut graphics_groups:Vec<IndexedGraphicsGroup>,
|
||||
mut physics_groups:Vec<IndexedPhysicsGroup>,
|
||||
)->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,
|
||||
|
||||
Reference in New Issue
Block a user