[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37844] branches/bmesh/blender/source/ blender: Turned select vertex path back on and added

Geoffrey Bantle hairbat at yahoo.com
Mon Jun 27 06:55:01 CEST 2011


Revision: 37844
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37844
Author:   briggs
Date:     2011-06-27 04:54:58 +0000 (Mon, 27 Jun 2011)
Log Message:
-----------
Turned select vertex path back on and added
back in selection history for bmesh->mesh
and mesh->bmesh conversions:
----------------------------------------------
Select Vertex Path had wrong invoke callback
(shouldn't have any?). 

Also selection history was not converted when 
doing bmesh->mesh or mesh->bmesh conversions. 
This meant that tabbing in and out of editmode
would make your selection history dissapear.
Undo pop would also not preserve selection 
history so any operators that relied on it
would not work when you adjusted their settings.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
    branches/bmesh/blender/source/blender/makesdna/DNA_meshdata_types.h

Modified: branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2011-06-27 04:50:08 UTC (rev 37843)
+++ branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2011-06-27 04:54:58 UTC (rev 37844)
@@ -247,6 +247,48 @@
 		CustomData_to_bmesh_block(&me->pdata, &bm->pdata, i, &f->head.data);
 	}
 
+	{
+		BMIter iter;
+		BMVert *vertex;
+		BMEdge *edge;
+		BMFace *face;
+		BMVert **vertex_array = MEM_callocN(sizeof(BMVert *) * bm->totvert,
+		                                  "Selection Conversion Vertex Pointer Array");
+		BMEdge **edge_array = MEM_callocN(sizeof(BMEdge *) * bm->totedge,
+		                                "Selection Conversion Edge Pointer Array");
+		BMFace **face_array = MEM_callocN(sizeof(BMFace *) * bm->totface,
+		                                "Selection Conversion Face Pointer Array");
+
+		for(i = 0, vertex = BMIter_New(&iter, bm, BM_VERTS_OF_MESH, NULL);
+		    vertex; i++, vertex = BMIter_Step(&iter)){
+			vertex_array[i] = vertex;
+		}
+
+		for(i = 0, edge = BMIter_New(&iter, bm, BM_EDGES_OF_MESH, NULL);
+		    edge; i++, edge = BMIter_Step(&iter)){
+			edge_array[i] = edge;
+		}
+
+		for(i = 0, face = BMIter_New(&iter, bm, BM_FACES_OF_MESH, NULL);
+		    face; i++, face = BMIter_Step(&iter)){
+			face_array[i] = face;
+		}
+
+		for(i = 0; i < me->totselect; i++){
+			if(me->mselect[i].type == ME_VSEL){
+				BM_store_selection(bm, vertex_array[me->mselect[i].index]);
+			}else if(me->mselect[i].type == ME_ESEL){
+				BM_store_selection(bm, edge_array[me->mselect[i].index]);
+			}else if(me->mselect[i].type == ME_FSEL){
+				BM_store_selection(bm, face_array[me->mselect[i].index]);
+			}
+		}
+
+		MEM_freeN(vertex_array);
+		MEM_freeN(edge_array);
+		MEM_freeN(face_array);
+	}
+
 	BLI_array_free(fedges);
 	BLI_array_free(verts);
 	
@@ -635,6 +677,28 @@
 
 	mesh_update_customdata_pointers(me);
 
+	{
+		BMEditSelection *selected;
+		me->totselect = BLI_countlist(&(bm->selected));
+
+		me->mselect = MEM_callocN(sizeof(MSelect) * me->totselect, "Mesh selection history");
+
+
+		for(i = 0, selected = bm->selected.first; selected; i++, selected = selected->next){
+			if(selected->type == BM_VERT){
+				me->mselect[i].type = ME_VSEL;
+
+			}else if(selected->type == BM_EDGE){
+				me->mselect[i].type = ME_ESEL;
+
+			}else if(selected->type == BM_FACE){
+				me->mselect[i].type = ME_FSEL;
+			}
+
+			me->mselect[i].index = BM_GetIndex(selected->data);
+		}
+	}
+
 	if (me->key) {
 		KeyBlock *actkey= BLI_findlink(&me->key->block, bm->shapenr-1);
 

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c	2011-06-27 04:50:08 UTC (rev 37843)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c	2011-06-27 04:54:58 UTC (rev 37844)
@@ -2645,7 +2645,6 @@
 
 	/* api callbacks */
 	ot->exec= select_vertex_path_exec;
-	ot->invoke= WM_menu_invoke;
 	ot->poll= ED_operator_editmesh;
 
 	/* flags */

Modified: branches/bmesh/blender/source/blender/makesdna/DNA_meshdata_types.h
===================================================================
--- branches/bmesh/blender/source/blender/makesdna/DNA_meshdata_types.h	2011-06-27 04:50:08 UTC (rev 37843)
+++ branches/bmesh/blender/source/blender/makesdna/DNA_meshdata_types.h	2011-06-27 04:54:58 UTC (rev 37844)
@@ -250,8 +250,8 @@
 #define ME_DRAW_ACT			4
 
 /* mselect->type */
-#define ME_VSEl	0
-#define ME_ESEl 1
+#define ME_VSEL	0
+#define ME_ESEL 1
 #define ME_FSEL 2
 
 /* mtface->flag */




More information about the Bf-blender-cvs mailing list