[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37817] branches/bmesh/blender/source/ blender/editors/mesh/bmesh_select.c: Brought back loop multiselect:
Geoffrey Bantle
hairbat at yahoo.com
Sun Jun 26 03:11:06 CEST 2011
Revision: 37817
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37817
Author: briggs
Date: 2011-06-26 01:11:03 +0000 (Sun, 26 Jun 2011)
Log Message:
-----------
Brought back loop multiselect:
----------------------------------------------
Loop multiselect operator brought back. It can
be accessed via the select->edge loop and
select->edge ring menu entries or through the
ctrl-e edge specials menu.
Modified Paths:
--------------
branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c
Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c 2011-06-25 23:50:50 UTC (rev 37816)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c 2011-06-26 01:11:03 UTC (rev 37817)
@@ -895,51 +895,58 @@
BMW_End(&walker);
}
-static int loop_multiselect(bContext *UNUSED(C), wmOperator *UNUSED(op))
+static int loop_multiselect(bContext *C, wmOperator *op)
{
-#if 0 //BMESH_TODO
Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= EM_GetBMEditMesh(((Mesh *)obedit->data));
+ BMEditMesh *em = ((Mesh*)obedit->data)->edit_btmesh;
BMEdge *eed;
BMEdge **edarray;
- int edindex, edfirstcount;
+ int edindex;
int looptype= RNA_boolean_get(op->ptr, "ring");
- /* sets em->totedgesel */
- EM_nedges_selected(em);
+ BMIter iter;
+ int totedgesel = 0;
+
+ for(eed = BMIter_New(&iter, em->bm, BM_EDGES_OF_MESH, NULL);
+ eed; eed = BMIter_Step(&iter)){
+
+ if(BM_TestHFlag(eed, BM_SELECT)){
+ totedgesel++;
+ }
+ }
+
- edarray = MEM_mallocN(sizeof(BMEdge*)*em->totedgesel,"edge array");
+ edarray = MEM_mallocN(sizeof(BMEdge*)*totedgesel,"edge array");
edindex = 0;
- edfirstcount = em->totedgesel;
- for(eed=em->edges.first; eed; eed=eed->next){
- if(eed->f&SELECT){
+ for(eed = BMIter_New(&iter, em->bm, BM_EDGES_OF_MESH, NULL);
+ eed; eed = BMIter_Step(&iter)){
+
+ if(BM_TestHFlag(eed, BM_SELECT)){
edarray[edindex] = eed;
- edindex += 1;
+ edindex++;
}
}
if(looptype){
- for(edindex = 0; edindex < edfirstcount; edindex +=1){
+ for(edindex = 0; edindex < totedgesel; edindex +=1){
eed = edarray[edindex];
- edgering_select(em, eed,SELECT);
+ walker_select(em, BMW_EDGERING, eed, 1);
}
- EM_selectmode_flush(em);
+ EDBM_selectmode_flush(em);
}
else{
- for(edindex = 0; edindex < edfirstcount; edindex +=1){
+ for(edindex = 0; edindex < totedgesel; edindex +=1){
eed = edarray[edindex];
- edgeloop_select(em, eed,SELECT);
+ walker_select(em, BMW_LOOP, eed, 1);
}
- EM_selectmode_flush(em);
+ EDBM_selectmode_flush(em);
}
MEM_freeN(edarray);
// if (EM_texFaceCheck())
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit);
- EM_EndBMEditMesh(obedit->data, em);
-#endif
return OPERATOR_FINISHED;
}
More information about the Bf-blender-cvs
mailing list