Bugfix #2948
authorTon Roosendaal <ton@blender.org>
Fri, 23 Sep 2005 08:12:52 +0000 (08:12 +0000)
committerTon Roosendaal <ton@blender.org>
Fri, 23 Sep 2005 08:12:52 +0000 (08:12 +0000)
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. :)

source/blender/src/editmesh_lib.c

index dc9e7455112b6f716c2239d795d03581020fb799..0375533ccb3294ccab3bc0f75c3bcb16c913f4ff 100644 (file)
@@ -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;