All kinds of fixes for new selection modes

- circle-select now works
- delete options for edge/face select work as to be expected.
  should check on a better set of choices in menu though
- assign material / select material options work for new modes
- shift+f fill didnt leave proper select flags...
- border select on face-gones (fgons) works
- 'draw normals' and fgons works now
This commit is contained in:
2004-09-24 18:17:23 +00:00
parent 572b7c078d
commit cfe9a95755
7 changed files with 103 additions and 48 deletions

View File

@@ -844,13 +844,13 @@ void delete_mesh(void)
efa= em->faces.first;
while(efa) {
nextvl= efa->next;
/* delete only faces with 2 or more vertices selected */
/* delete only faces with 1 or more edges selected */
count= 0;
if(efa->v1->f & SELECT) count++;
if(efa->v2->f & SELECT) count++;
if(efa->v3->f & SELECT) count++;
if(efa->v4 && (efa->v4->f & SELECT)) count++;
if(count>1) {
if(efa->e1->f & SELECT) count++;
if(efa->e2->f & SELECT) count++;
if(efa->e3->f & SELECT) count++;
if(efa->e4 && (efa->e4->f & SELECT)) count++;
if(count) {
BLI_remlink(&em->faces, efa);
free_editface(efa);
}
@@ -859,7 +859,7 @@ void delete_mesh(void)
eed= em->edges.first;
while(eed) {
nexted= eed->next;
if( (eed->v1->f & SELECT) && (eed->v2->f & SELECT) ) {
if(eed->f & SELECT) {
remedge(eed);
free_editedge(eed);
}
@@ -883,30 +883,31 @@ void delete_mesh(void)
}
else if(event==1) {
str= "Erase Edges";
eed= em->edges.first;
while(eed) {
nexted= eed->next;
if( (eed->v1->f & SELECT) && (eed->v2->f & SELECT) ) {
remedge(eed);
free_editedge(eed);
}
eed= nexted;
}
// faces first
efa= em->faces.first;
while(efa) {
nextvl= efa->next;
event=0;
if( efa->v1->f & SELECT) event++;
if( efa->v2->f & SELECT) event++;
if( efa->v3->f & SELECT) event++;
if(efa->v4 && (efa->v4->f & SELECT)) event++;
if( efa->e1->f & SELECT) event++;
if( efa->e2->f & SELECT) event++;
if( efa->e3->f & SELECT) event++;
if(efa->e4 && (efa->e4->f & SELECT)) event++;
if(event>1) {
if(event) {
BLI_remlink(&em->faces, efa);
free_editface(efa);
}
efa= nextvl;
}
eed= em->edges.first;
while(eed) {
nexted= eed->next;
if(eed->f & SELECT) {
remedge(eed);
free_editedge(eed);
}
eed= nexted;
}
/* to remove loose vertices: */
eed= em->edges.first;
while(eed) {
@@ -917,7 +918,7 @@ void delete_mesh(void)
eve= em->verts.first;
while(eve) {
nextve= eve->next;
if(eve->f & 1) {
if(eve->f & SELECT) {
BLI_remlink(&em->verts,eve);
free_editvert(eve);
}
@@ -940,7 +941,7 @@ void delete_mesh(void)
efa= em->faces.first;
while(efa) {
nextvl= efa->next;
if(faceselectedAND(efa, 1)) {
if(efa->f & SELECT) {
BLI_remlink(&em->faces, efa);
free_editface(efa);
}
@@ -1040,7 +1041,7 @@ void fill_mesh(void)
BLI_end_edgefill();
waitcursor(0);
EM_select_flush();
countall();
allqueue(REDRAWVIEW3D, 0);
makeDispList(G.obedit);