diff options
author | Ton Roosendaal <ton@blender.org> | 2004-09-24 22:17:23 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-09-24 22:17:23 +0400 |
commit | cfe9a9575526458412d50cc6122fdde1d66dd4d2 (patch) | |
tree | 9ba2543e0b463513905610e094d43dd722a264fc /source/blender/src/editmesh_tools.c | |
parent | 572b7c078d152054edc3a2f46f4d01f3def92642 (diff) |
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
Diffstat (limited to 'source/blender/src/editmesh_tools.c')
-rw-r--r-- | source/blender/src/editmesh_tools.c | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/source/blender/src/editmesh_tools.c b/source/blender/src/editmesh_tools.c index 3cbf29599b3..6cba1758597 100644 --- a/source/blender/src/editmesh_tools.c +++ b/source/blender/src/editmesh_tools.c @@ -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); |