[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53335] trunk/blender/source/blender/bmesh /operators: fix [#33651] Spin tool destroys unselected loose vertex
Campbell Barton
ideasman42 at gmail.com
Thu Dec 27 02:02:36 CET 2012
Revision: 53335
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53335
Author: campbellbarton
Date: 2012-12-27 01:02:32 +0000 (Thu, 27 Dec 2012)
Log Message:
-----------
fix [#33651] Spin tool destroys unselected loose vertex
bmesh.ops.extrude_face_region() didn't check for isolated verts (not connected to geometry), and removed them, happened for Ctrl+LMB extrude too.
Modified Paths:
--------------
trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
trunk/blender/source/blender/bmesh/operators/bmo_extrude.c
Modified: trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_dupe.c 2012-12-26 20:59:35 UTC (rev 53334)
+++ trunk/blender/source/blender/bmesh/operators/bmo_dupe.c 2012-12-27 01:02:32 UTC (rev 53335)
@@ -483,7 +483,7 @@
{
BMOperator dupop, extop;
float cent[3], dvec[3];
- float axis[3] = {0.0f, 0.0f, 1.0f};
+ float axis[3];
float rmat[3][3];
float phi;
int steps, do_dupli, a, usedvec;
Modified: trunk/blender/source/blender/bmesh/operators/bmo_extrude.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_extrude.c 2012-12-26 20:59:35 UTC (rev 53334)
+++ trunk/blender/source/blender/bmesh/operators/bmo_extrude.c 2012-12-27 01:02:32 UTC (rev 53335)
@@ -315,27 +315,29 @@
/* calculate verts to delete */
BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
- found = FALSE;
+ if (v->e) { /* only deal with verts attached to geometry [#33651] */
+ found = FALSE;
- BM_ITER_ELEM (e, &viter, v, BM_EDGES_OF_VERT) {
- if (!BMO_elem_flag_test(bm, e, EXT_INPUT) || !BMO_elem_flag_test(bm, e, EXT_DEL)) {
- found = TRUE;
- break;
- }
- }
-
- /* avoid an extra loop */
- if (found == TRUE) {
- BM_ITER_ELEM (f, &viter, v, BM_FACES_OF_VERT) {
- if (!BMO_elem_flag_test(bm, f, EXT_INPUT)) {
+ BM_ITER_ELEM (e, &viter, v, BM_EDGES_OF_VERT) {
+ if (!BMO_elem_flag_test(bm, e, EXT_INPUT) || !BMO_elem_flag_test(bm, e, EXT_DEL)) {
found = TRUE;
break;
}
}
- }
- if (found == FALSE) {
- BMO_elem_flag_enable(bm, v, EXT_DEL);
+ /* avoid an extra loop */
+ if (found == TRUE) {
+ BM_ITER_ELEM (f, &viter, v, BM_FACES_OF_VERT) {
+ if (!BMO_elem_flag_test(bm, f, EXT_INPUT)) {
+ found = TRUE;
+ break;
+ }
+ }
+ }
+
+ if (found == FALSE) {
+ BMO_elem_flag_enable(bm, v, EXT_DEL);
+ }
}
}
More information about the Bf-blender-cvs
mailing list