[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20965] branches/bmesh/blender/source/ blender: ctrl-click to make an isolated vert works again

Joseph Eagar joeedh at gmail.com
Thu Jun 18 05:04:28 CEST 2009


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); 





More information about the Bf-blender-cvs mailing list