[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20944] branches/bmesh/blender/source/ blender: last commit was accidental.

Joseph Eagar joeedh at gmail.com
Tue Jun 16 23:33:14 CEST 2009


Revision: 20944
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20944
Author:   joeedh
Date:     2009-06-16 23:33:12 +0200 (Tue, 16 Jun 2009)

Log Message:
-----------
last commit was accidental.  anyway, face loop select mostly works now.  there's still some issues.  shift-unselecting loops isn't working right now, need to fix it.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers.c
    branches/bmesh/blender/source/blender/editors/mesh/editmesh_tools.c

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers.c	2009-06-16 21:28:19 UTC (rev 20943)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers.c	2009-06-16 21:33:12 UTC (rev 20944)
@@ -56,7 +56,7 @@
 
 typedef struct faceloopWalker {
 	struct faceloopWalker * prev;
-	BMFace *f;
+	BMLoop *l;
 } faceloopWalker;
 
 /*  NOTE: this comment is out of date, update it - joeedh
@@ -553,7 +553,6 @@
 static void *loopWalker_step(BMWalker *walker)
 {
 	loopWalker *lwalk = walker->currentstate, owalk;
-	BMIter iter;
 	BMEdge *e = lwalk->cur, *nexte = NULL;
 	BMLoop *l, *l2;
 	BMVert *v;
@@ -606,7 +605,7 @@
 
 static void faceloopWalker_begin(BMWalker *walker, void *data)
 {
-	faceloopWalker *lwalk;
+	faceloopWalker *lwalk, owalk;
 	BMEdge *e = data;
 
 	BMW_pushstate(walker);
@@ -615,7 +614,20 @@
 
 	lwalk = walker->currentstate;
 	lwalk->l = e->loop;
+	BLI_ghash_insert(walker->visithash, lwalk->l->f, NULL);
 
+	/*rewind*/
+	while (walker->currentstate) {
+		owalk = *((faceloopWalker*)walker->currentstate);
+		BMW_walk(walker);
+	}
+
+	BMW_pushstate(walker);
+	lwalk = walker->currentstate;
+	*lwalk = owalk;
+
+	BLI_ghash_free(walker->visithash, NULL, NULL);
+	walker->visithash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp);
 	BLI_ghash_insert(walker->visithash, lwalk->l->f, NULL);
 }
 
@@ -634,15 +646,20 @@
 	BMFace *f = lwalk->l->f;
 	BMLoop *l = lwalk->l;
 
+	BMW_popstate(walker);
+
 	l = l->head.next->next;
+	if (l == l->radial.next->data) {
+		l = l->head.prev->prev;
+	}
 	l = l->radial.next->data;
-	
-	BMW_popstate(walker);
 
-	if (!BLI_ghash_haskey(walker->visithash, l->f)) {
+	if (l->f->len == 4 && !BLI_ghash_haskey(walker->visithash, l->f)) {
 		BMW_pushstate(walker);
 		lwalk = walker->currentstate;
 		lwalk->l = l;
+
+		BLI_ghash_insert(walker->visithash, l->f, NULL);
 	}
 
 	return f;

Modified: branches/bmesh/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/editmesh_tools.c	2009-06-16 21:28:19 UTC (rev 20943)
+++ branches/bmesh/blender/source/blender/editors/mesh/editmesh_tools.c	2009-06-16 21:33:12 UTC (rev 20944)
@@ -1307,6 +1307,7 @@
 
 /* Note, these values must match delete_mesh() event values */
 static EnumPropertyItem prop_mesh_delete_types[] = {
+	{7, "DISSOLVE",         "Dissolve Verts", ""},
 	{10,"VERT",		"Vertices", ""},
 	{1, "EDGE",		"Edges", ""},
 	{2, "FACE",		"Faces", ""},
@@ -1314,7 +1315,6 @@
 	{4, "EDGE_FACE","Edges & Faces", ""},
 	{5, "ONLY_FACE","Only Faces", ""},
 	{6, "EDGE_LOOP","Edge Loop", ""},
-	{7, "DISSOLVE","Dissolve Verts", ""},
 	{0, NULL, NULL, NULL}
 };
 





More information about the Bf-blender-cvs mailing list