void PolyMesh::Optimize (PolyMesh::IsEqualVertexCB cb) { OptimizeVertices(cb); // remove double linked vertices vector<Poly*> npl; for (unsigned int a=0;a<poly.size();a++) { Poly *pl=poly[a]; bool finished; do { finished=true; for (unsigned int i=0,j=pl->verts.size()-1;i<pl->verts.size();j=i++) if (pl->verts[i] == pl->verts[j]) { pl->verts.erase (pl->verts.begin()+i); finished=false; break; } } while (!finished); if (pl->verts.size()>=3) npl.push_back(pl); else delete pl; } poly=npl; }
void MdlObject::Optimize () { OptimizeVertices(); // remove double linked vertices vector<Poly*> npl; for (int a=0;a<poly.size();a++) { Poly *pl=poly[a]; bool finished; do { finished=true; for (int i=0,j=(int)pl->verts.size()-1;i<pl->verts.size();j=i++) if (pl->verts[i] == pl->verts[j]) { pl->verts.erase (pl->verts.begin()+i); finished=false; break; } } while (!finished); if (pl->verts.size()>=3) npl.push_back(pl); else delete pl; } poly=npl; InvalidateRenderData(); }