[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23588] trunk/blender/source/blender/ editors/mesh/loopcut.c: Brought back mousewheel multicut to Ctrl-R loopcut tool that was recently added .

Roland Hess me at harkyman.com
Thu Oct 1 18:37:08 CEST 2009


Revision: 23588
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23588
Author:   harkyman
Date:     2009-10-01 18:37:08 +0200 (Thu, 01 Oct 2009)

Log Message:
-----------
Brought back mousewheel multicut to Ctrl-R loopcut tool that was recently added. Tweak still doesn't work for the loopcut op, but it didn't before, so at least we're advancing.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/loopcut.c

Modified: trunk/blender/source/blender/editors/mesh/loopcut.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/loopcut.c	2009-10-01 16:32:33 UTC (rev 23587)
+++ trunk/blender/source/blender/editors/mesh/loopcut.c	2009-10-01 16:37:08 UTC (rev 23588)
@@ -50,6 +50,7 @@
 
 #include "BKE_blender.h"
 #include "BKE_context.h"
+#include "BKE_depsgraph.h"
 #include "BKE_scene.h"
 #include "BKE_utildefines.h"
 #include "BKE_mesh.h"
@@ -249,22 +250,22 @@
 	lcd->totedge = tot;
 }
 
-static void ringsel_find_edge(tringselOpData *lcd, const bContext *C, ARegion *ar)
+static void ringsel_find_edge(tringselOpData *lcd, const bContext *C, ARegion *ar, int cuts)
 {
 	if (lcd->eed)
-		edgering_sel(lcd, 1, 0);
+		edgering_sel(lcd, cuts, 0);
 }
 
 static void ringsel_finish(bContext *C, wmOperator *op)
 {
 	tringselOpData *lcd= op->customdata;
+	int cuts= RNA_int_get(op->ptr,"number_cuts");
 
 	if (lcd->eed) {
-		edgering_sel(lcd, 0, 1);
+		edgering_sel(lcd, cuts, 1);
 		if (lcd->do_cut) {
 			EditMesh *em = BKE_mesh_get_editmesh(lcd->ob->data);
-			esubdivideflag(lcd->ob, em, SELECT, 0.0f, 
-			               0.0f, 0, 1, SUBDIV_SELECT_LOOPCUT);
+			esubdivideflag(lcd->ob, em, SELECT, 0.0f, 0.0f, 0, cuts, SUBDIV_SELECT_LOOPCUT);
 			
 			DAG_id_flush_update(lcd->ob->data, OB_RECALC_DATA);
 		}
@@ -340,7 +341,7 @@
 	edge = findnearestedge(&lcd->vc, &dist);
 	if (edge != lcd->eed) {
 		lcd->eed = edge;
-		ringsel_find_edge(lcd, C, lcd->ar);
+		ringsel_find_edge(lcd, C, lcd->ar, 1);
 	}
 
 	return OPERATOR_RUNNING_MODAL;
@@ -368,7 +369,7 @@
 	edge = findnearestedge(&lcd->vc, &dist);
 	if (edge != lcd->eed) {
 		lcd->eed = edge;
-		ringsel_find_edge(lcd, C, lcd->ar);
+		ringsel_find_edge(lcd, C, lcd->ar, 1);
 	}
 
 	return OPERATOR_RUNNING_MODAL;
@@ -376,10 +377,12 @@
 
 static int ringsel_modal (bContext *C, wmOperator *op, wmEvent *event)
 {
+	int cuts= RNA_int_get(op->ptr,"number_cuts");
 	tringselOpData *lcd= op->customdata;
 
 	view3d_operator_needs_opengl(C);
 
+
 	switch (event->type) {
 		case RIGHTMOUSE:
 		case LEFTMOUSE: /* confirm */ // XXX hardcoded
@@ -395,6 +398,20 @@
 
 			ED_region_tag_redraw(lcd->ar);
 			break;
+		case WHEELUPMOUSE:  /* change number of cuts */
+			cuts++;
+			RNA_int_set(op->ptr,"number_cuts",cuts);
+			ringsel_find_edge(lcd, C, lcd->ar, cuts);
+			
+			ED_region_tag_redraw(lcd->ar);
+			break;
+		case WHEELDOWNMOUSE:  /* change number of cuts */
+			cuts=MAX2(cuts-1,1);
+			RNA_int_set(op->ptr,"number_cuts",cuts);
+			ringsel_find_edge(lcd, C, lcd->ar,cuts);
+			
+			ED_region_tag_redraw(lcd->ar);
+			break;
 		case MOUSEMOVE: { /* mouse moved somewhere to select another loop */
 			int dist = 75;
 			EditEdge *edge;
@@ -405,12 +422,12 @@
 
 			if (edge != lcd->eed) {
 				lcd->eed = edge;
-				ringsel_find_edge(lcd, C, lcd->ar);
+				ringsel_find_edge(lcd, C, lcd->ar, cuts);
 			}
 
 			ED_region_tag_redraw(lcd->ar);
 			break;
-		}
+		}			
 	}
 	
 	/* keep going until the user confirms */
@@ -451,4 +468,7 @@
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
+
+	/* properties */
+	RNA_def_int(ot->srna, "number_cuts", 1, 1, 10, "Number of Cuts", "", 1, INT_MAX);
 }





More information about the Bf-blender-cvs mailing list