[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