[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45324] trunk/blender/source/blender/bmesh /operators/bmo_extrude.c: fix - extrude could create hidden faces when the only connected face to an edge was hidden , the hidden setting would be copied to the newly created face.

Campbell Barton ideasman42 at gmail.com
Mon Apr 2 05:51:28 CEST 2012


Revision: 45324
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45324
Author:   campbellbarton
Date:     2012-04-02 03:51:16 +0000 (Mon, 02 Apr 2012)
Log Message:
-----------
fix - extrude could create hidden faces when the only connected face to an edge was hidden, the hidden setting would be copied to the newly created face.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_extrude.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_extrude.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_extrude.c	2012-04-02 02:41:28 UTC (rev 45323)
+++ trunk/blender/source/blender/bmesh/operators/bmo_extrude.c	2012-04-02 03:51:16 UTC (rev 45324)
@@ -116,46 +116,46 @@
 static void bm_extrude_copy_face_loop_attributes(BMesh *bm, BMFace *f, BMEdge *e, BMEdge *newedge)
 {
 	BMIter iter;
-	BMLoop *l, *l2;
+	BMLoop *l, *l_other;
 
-	/* copy attribute */
-	l = BM_iter_new(&iter, bm, BM_LOOPS_OF_FACE, f);
-	for ( ; l; l = BM_iter_step(&iter)) {
-
+	/* copy attributes */
+	BM_ITER(l, &iter, bm, BM_LOOPS_OF_FACE, f) {
 		if (l->e != e && l->e != newedge) {
 			continue;
 		}
 
-		l2 = l->radial_next;
+		l_other = l->radial_next;
 		
-		if (l2 == l) {
-			l2 = newedge->l;
+		if (l_other == l) {
+			l_other = newedge->l;
 
-			if (l2 != l) {
-				BM_elem_attrs_copy(bm, bm, l2->f, l->f);
+			if (l_other != l) {
+				BM_elem_attrs_copy(bm, bm, l_other->f, f);
+				BM_elem_flag_disable(f, BM_ELEM_HIDDEN); /* possibly we copy from a hidden face */
 
-				BM_elem_attrs_copy(bm, bm, l2, l);
-				l2 = l2->next;
+				BM_elem_attrs_copy(bm, bm, l_other, l);
+				l_other = l_other->next;
 				l = l->next;
-				BM_elem_attrs_copy(bm, bm, l2, l);
+				BM_elem_attrs_copy(bm, bm, l_other, l);
 			}
 		}
 		else {
-			BM_elem_attrs_copy(bm, bm, l2->f, l->f);
+			BM_elem_attrs_copy(bm, bm, l_other->f, f);
+			BM_elem_flag_disable(f, BM_ELEM_HIDDEN); /* possibly we copy from a hidden face */
 
-			/* copy dat */
-			if (l2->v == l->v) {
-				BM_elem_attrs_copy(bm, bm, l2, l);
-				l2 = l2->next;
+			/* copy data */
+			if (l_other->v == l->v) {
+				BM_elem_attrs_copy(bm, bm, l_other, l);
+				l_other = l_other->next;
 				l = l->next;
-				BM_elem_attrs_copy(bm, bm, l2, l);
+				BM_elem_attrs_copy(bm, bm, l_other, l);
 			}
 			else {
-				l2 = l2->next;
-				BM_elem_attrs_copy(bm, bm, l2, l);
-				l2 = l2->prev;
+				l_other = l_other->next;
+				BM_elem_attrs_copy(bm, bm, l_other, l);
+				l_other = l_other->prev;
 				l = l->next;
-				BM_elem_attrs_copy(bm, bm, l2, l);
+				BM_elem_attrs_copy(bm, bm, l_other, l);
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list