forked from bartvdbraak/blender
separate loose parts was hanging on hidden verts
This commit is contained in:
parent
69cb2cc37b
commit
8faa11a9e6
@ -1480,10 +1480,18 @@ static int mesh_separate_loose(Scene *scene, Base *editbase)
|
|||||||
}
|
}
|
||||||
|
|
||||||
EM_clear_flag_all(em, SELECT);
|
EM_clear_flag_all(em, SELECT);
|
||||||
|
|
||||||
while(doit && em->verts.first) {
|
while(doit) {
|
||||||
/* Select a random vert to start with */
|
/* Select a random vert to start with */
|
||||||
EditVert *eve= em->verts.first;
|
EditVert *eve;
|
||||||
|
int tot;
|
||||||
|
|
||||||
|
/* check if all verts that are visible have been done */
|
||||||
|
for(eve=em->verts.first; eve; eve= eve->next)
|
||||||
|
if(!eve->h) break;
|
||||||
|
if(eve==NULL) break; /* only hidden verts left, quit early */
|
||||||
|
|
||||||
|
/* first non hidden vert */
|
||||||
eve->f |= SELECT;
|
eve->f |= SELECT;
|
||||||
|
|
||||||
selectconnected_mesh_all(em);
|
selectconnected_mesh_all(em);
|
||||||
@ -1493,8 +1501,14 @@ static int mesh_separate_loose(Scene *scene, Base *editbase)
|
|||||||
if((eve->f & SELECT)==0) break;
|
if((eve->f & SELECT)==0) break;
|
||||||
if(eve==NULL) break;
|
if(eve==NULL) break;
|
||||||
|
|
||||||
|
tot= BLI_countlist(&em->verts);
|
||||||
|
|
||||||
/* and now separate */
|
/* and now separate */
|
||||||
doit= mesh_separate_selected(scene, editbase);
|
doit= mesh_separate_selected(scene, editbase);
|
||||||
|
|
||||||
|
/* with hidden verts this can happen */
|
||||||
|
if(tot == BLI_countlist(&em->verts))
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
BKE_mesh_end_editmesh(me, em);
|
BKE_mesh_end_editmesh(me, em);
|
||||||
|
Loading…
Reference in New Issue
Block a user