Revision: 20965
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20965
Author:   joeedh
Date:     2009-06-18 05:04:27 +0200 (Thu, 18 Jun 2009)

Log Message:
-----------
ctrl-click to make an isolated vert works again

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators_private.h
    branches/bmesh/blender/source/blender/bmesh/operators/utils.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c        
2009-06-18 02:05:56 UTC (rev 20964)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c        
2009-06-18 03:04:27 UTC (rev 20965)
@@ -3,7 +3,14 @@
 
 #include <stdio.h>
 
-/*applies a transform to vertices*/
+BMOpDefine def_makevert = {
+       "makevert",
+       {{BMOP_OPSLOT_VEC, "co"},
+       {BMOP_OPSLOT_ELEMENT_BUF, "newvertout"},
+       {0, /*null-terminating sentinel*/}},
+       bmesh_makevert_exec,
+       0,
+};
 
 /*contextual_create is fkey, it creates
   new faces, makes stuff from edge nets,
@@ -47,6 +54,7 @@
 };
 
 
+/*applies a transform to vertices*/
 BMOpDefine def_transform = {
        "transform",
        {{BMOP_OPSLOT_MAT, "mat"},
@@ -248,6 +256,7 @@
        &def_rotate,
        &def_edgenet_fill,
        &def_contextual_create,
+       &def_makevert,
 };
 
 int bmesh_total_ops = (sizeof(opdefines) / sizeof(void*));

Modified: 
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators_private.h
===================================================================
--- 
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators_private.h    
    2009-06-18 02:05:56 UTC (rev 20964)
+++ 
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators_private.h    
    2009-06-18 03:04:27 UTC (rev 20965)
@@ -28,5 +28,7 @@
 void bmesh_contextual_create_exec(BMesh *bm, BMOperator *op);
 void bmesh_edgenet_fill_exec(BMesh *bm, BMOperator *op);
 void bmesh_rotate_exec(BMesh *bm, BMOperator *op);
+void bmesh_makevert_exec(BMesh *bm, BMOperator *op);
 
+
 #endif

Modified: branches/bmesh/blender/source/blender/bmesh/operators/utils.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/utils.c       
2009-06-18 02:05:56 UTC (rev 20964)
+++ branches/bmesh/blender/source/blender/bmesh/operators/utils.c       
2009-06-18 03:04:27 UTC (rev 20965)
@@ -32,6 +32,15 @@
  *
 */
 
+void bmesh_makevert_exec(BMesh *bm, BMOperator *op) {
+       float vec[3];
+
+       BMO_Get_Vec(op, "co", vec);
+
+       BMO_SetFlag(bm, BM_Make_Vert(bm, vec, NULL), 1);        
+       BMO_Flag_To_Slot(bm, op, "newvertout", 1, BM_VERT);
+}
+
 void bmesh_transform_exec(BMesh *bm, BMOperator *op) {
        BMOIter iter;
        BMVert *v;

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c    
2009-06-18 02:05:56 UTC (rev 20964)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c    
2009-06-18 03:04:27 UTC (rev 20965)
@@ -450,7 +450,6 @@
 short EDBM_Extrude_verts_indiv(BMEditMesh *em, wmOperator *op, short flag, 
float *nor) 
 {
        BMOperator bmop;
-       BMIter iter;
        BMOIter siter;
        BMVert *v;
 
@@ -912,26 +911,27 @@
                EDBM_CallOpf(vc.em, op, "translate verts=%hv vec=%v",
                        BM_SELECT, min);
        }
-       /*
        else {
-               float mat[3][3],imat[3][3];
                float *curs= give_cursor(vc.scene, vc.v3d);
+               BMOperator bmop;
+               BMOIter oiter;
                
                VECCOPY(min, curs);
+
                view3d_get_view_aligned_coordinate(&vc, min, event->mval);
+               Mat4Invert(vc.obedit->imat, vc.obedit->obmat); 
+               Mat4MulVecfl(vc.obedit->imat, min); // back in object space
                
-               eve= addvertlist(vc.em, 0, NULL);
+               EDBM_InitOpf(vc.em, &bmop, op, "makevert co=%v", min);
+               BMO_Exec_Op(vc.em->bm, &bmop);
 
-               Mat3CpyMat4(mat, vc.obedit->obmat);
-               Mat3Inv(imat, mat);
-               
-               VECCOPY(eve->co, min);
-               Mat3MulVecfl(imat, eve->co);
-               VecSubf(eve->co, eve->co, vc.obedit->obmat[3]);
-               
-               eve->f= SELECT;
+               BMO_ITER(v1, &oiter, vc.em->bm, &bmop, "newvertout") {
+                       BM_Select(vc.em->bm, v1, 1);
+               }
+
+               if (!EDBM_FinishOp(vc.em, &bmop, op, 1))
+                       return OPERATOR_CANCELLED;
        }
-       */
 
        //retopo_do_all();
        WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, vc.obedit); 


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to