diff options
author | Ton Roosendaal <ton@blender.org> | 2005-09-23 12:12:52 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2005-09-23 12:12:52 +0400 |
commit | 00d26ddf483e23beb82921e6a1854df07ccd1e39 (patch) | |
tree | c1bf857d1006277d6aa381c142f43a6e358b4ffa /source/blender/src/editmesh_lib.c | |
parent | 367c91bf3426628f1b943ecda2de0972d50f5528 (diff) |
Bugfix #2948
For using the Fkey (add face) editmesh tool:
prevented triangles being made that are partially a quad face already.
Tools in editmode don't like such situations (tria->quad for example), also
subsurf hates it. :)
Diffstat (limited to 'source/blender/src/editmesh_lib.c')
-rw-r--r-- | source/blender/src/editmesh_lib.c | 44 |
1 files changed, 14 insertions, 30 deletions
diff --git a/source/blender/src/editmesh_lib.c b/source/blender/src/editmesh_lib.c index dc9e7455112..0375533ccb3 100644 --- a/source/blender/src/editmesh_lib.c +++ b/source/blender/src/editmesh_lib.c @@ -1373,44 +1373,28 @@ void recalc_editnormals(void) } - +/* this also prevents triangles being made in quads */ int compareface(EditFace *vl1, EditFace *vl2) { EditVert *v1, *v2, *v3, *v4; + int equal= 0; - if(vl1->v4 && vl2->v4) { - v1= vl2->v1; - v2= vl2->v2; - v3= vl2->v3; - v4= vl2->v4; - - if(vl1->v1==v1 || vl1->v2==v1 || vl1->v3==v1 || vl1->v4==v1) { - if(vl1->v1==v2 || vl1->v2==v2 || vl1->v3==v2 || vl1->v4==v2) { - if(vl1->v1==v3 || vl1->v2==v3 || vl1->v3==v3 || vl1->v4==v3) { - if(vl1->v1==v4 || vl1->v2==v4 || vl1->v3==v4 || vl1->v4==v4) { - return 1; - } - } - } - } - } - else if(vl1->v4==0 && vl2->v4==0) { - v1= vl2->v1; - v2= vl2->v2; - v3= vl2->v3; - - if(vl1->v1==v1 || vl1->v2==v1 || vl1->v3==v1) { - if(vl1->v1==v2 || vl1->v2==v2 || vl1->v3==v2) { - if(vl1->v1==v3 || vl1->v2==v3 || vl1->v3==v3) { - return 1; - } - } - } - } + v1= vl2->v1; + v2= vl2->v2; + v3= vl2->v3; + v4= vl2->v4; + + if(vl1->v1==v1 || vl1->v2==v1 || vl1->v3==v1 || vl1->v4==v1) equal++; + if(vl1->v1==v2 || vl1->v2==v2 || vl1->v3==v2 || vl1->v4==v2) equal++; + if(vl1->v1==v3 || vl1->v2==v3 || vl1->v3==v3 || vl1->v4==v3) equal++; + if(vl1->v1==v4 || vl1->v2==v4 || vl1->v3==v4 || vl1->v4==v4) equal++; + + if(equal>2) return 1; return 0; } +/* this also prevents triangles being made in quads */ EditFace *exist_face(EditVert *v1, EditVert *v2, EditVert *v3, EditVert *v4) { EditMesh *em = G.editMesh; |