[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59385] trunk/blender/source/blender/bmesh : bmesh duplicate operator: add vertmap output slot.

Campbell Barton ideasman42 at gmail.com
Thu Aug 22 19:32:41 CEST 2013


Revision: 59385
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59385
Author:   campbellbarton
Date:     2013-08-22 17:32:41 +0000 (Thu, 22 Aug 2013)
Log Message:
-----------
bmesh duplicate operator: add vertmap output slot.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c
    trunk/blender/source/blender/bmesh/operators/bmo_dupe.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c	2013-08-22 17:27:10 UTC (rev 59384)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_opdefines.c	2013-08-22 17:32:41 UTC (rev 59385)
@@ -1154,6 +1154,7 @@
 	/* facemap maps from source faces to dupe
 	 * faces, and from dupe faces to source faces */
 	 {"face_map.out", BMO_OP_SLOT_MAPPING, {BMO_OP_SLOT_SUBTYPE_MAP_ELEM}},
+	 {"vert_map.out", BMO_OP_SLOT_MAPPING, {BMO_OP_SLOT_SUBTYPE_MAP_ELEM}},
 	 {"boundary_map.out", BMO_OP_SLOT_MAPPING, {BMO_OP_SLOT_SUBTYPE_MAP_ELEM}},
 	 {"isovert_map.out", BMO_OP_SLOT_MAPPING, {BMO_OP_SLOT_SUBTYPE_MAP_ELEM}},
 	{{'\0'}},

Modified: trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_dupe.c	2013-08-22 17:27:10 UTC (rev 59384)
+++ trunk/blender/source/blender/bmesh/operators/bmo_dupe.c	2013-08-22 17:32:41 UTC (rev 59385)
@@ -46,13 +46,17 @@
  *
  * Copy an existing vertex from one bmesh to another.
  */
-static BMVert *bmo_vert_copy(BMesh *bm_dst, BMesh *bm_src, BMVert *v_src, GHash *vhash)
+static BMVert *bmo_vert_copy(BMOperator *op,
+                             BMOpSlot *slot_vertmap_out,
+                             BMesh *bm_dst, BMesh *bm_src, BMVert *v_src, GHash *vhash)
 {
 	BMVert *v_dst;
 
 	/* Create a new vertex */
 	v_dst = BM_vert_create(bm_dst, v_src->co, NULL, BM_CREATE_SKIP_CD);
-	
+	BMO_slot_map_elem_insert(op, slot_vertmap_out, v_src, v_dst);
+	BMO_slot_map_elem_insert(op, slot_vertmap_out, v_dst, v_src);
+
 	/* Insert new vertex into the vert hash */
 	BLI_ghash_insert(vhash, v_src, v_dst);
 
@@ -187,8 +191,9 @@
 	GHash *vhash, *ehash;
 
 	BMOpSlot *slot_boundary_map_out = BMO_slot_get(op->slots_out, "boundary_map.out");
+	BMOpSlot *slot_isovert_map_out  = BMO_slot_get(op->slots_out, "isovert_map.out");
 	BMOpSlot *slot_face_map_out     = BMO_slot_get(op->slots_out, "face_map.out");
-	BMOpSlot *slot_isovert_map_out  = BMO_slot_get(op->slots_out, "isovert_map.out");
+	BMOpSlot *slot_vert_map_out     = BMO_slot_get(op->slots_out, "vert_map.out");
 
 	/* initialize pointer hashes */
 	vhash = BLI_ghash_ptr_new("bmesh dupeops v");
@@ -202,7 +207,7 @@
 			BMIter iter;
 			bool isolated = true;
 
-			v2 = bmo_vert_copy(bm_dst, bm_src, v, vhash);
+			v2 = bmo_vert_copy(op, slot_vert_map_out, bm_dst, bm_src, v, vhash);
 
 			BM_ITER_ELEM (f, &iter, v, BM_FACES_OF_VERT) {
 				if (BMO_elem_flag_test(bm_src, f, DUPE_INPUT)) {
@@ -235,11 +240,11 @@
 		{
 			/* make sure that verts are copied */
 			if (!BMO_elem_flag_test(bm_src, e->v1, DUPE_DONE)) {
-				bmo_vert_copy(bm_dst, bm_src, e->v1, vhash);
+				bmo_vert_copy(op, slot_vert_map_out, bm_dst, bm_src, e->v1, vhash);
 				BMO_elem_flag_enable(bm_src, e->v1, DUPE_DONE);
 			}
 			if (!BMO_elem_flag_test(bm_src, e->v2, DUPE_DONE)) {
-				bmo_vert_copy(bm_dst, bm_src, e->v2, vhash);
+				bmo_vert_copy(op, slot_vert_map_out, bm_dst, bm_src, e->v2, vhash);
 				BMO_elem_flag_enable(bm_src, e->v2, DUPE_DONE);
 			}
 			/* now copy the actual edge */
@@ -254,7 +259,7 @@
 			/* vertex pass */
 			BM_ITER_ELEM (v, &viter, f, BM_VERTS_OF_FACE) {
 				if (!BMO_elem_flag_test(bm_src, v, DUPE_DONE)) {
-					bmo_vert_copy(bm_dst, bm_src, v, vhash);
+					bmo_vert_copy(op, slot_vert_map_out, bm_dst, bm_src, v, vhash);
 					BMO_elem_flag_enable(bm_src, v, DUPE_DONE);
 				}
 			}




More information about the Bf-blender-cvs mailing list