[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14213] trunk/blender/source/blender/src: lasso select for nodes

Campbell Barton ideasman42 at gmail.com
Sat Mar 22 21:54:09 CET 2008


Revision: 14213
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14213
Author:   campbellbarton
Date:     2008-03-22 21:54:09 +0100 (Sat, 22 Mar 2008)

Log Message:
-----------
lasso select for nodes

Modified Paths:
--------------
    trunk/blender/source/blender/src/editnode.c
    trunk/blender/source/blender/src/editview.c

Modified: trunk/blender/source/blender/src/editnode.c
===================================================================
--- trunk/blender/source/blender/src/editnode.c	2008-03-22 14:47:42 UTC (rev 14212)
+++ trunk/blender/source/blender/src/editnode.c	2008-03-22 20:54:09 UTC (rev 14213)
@@ -2299,10 +2299,15 @@
 					node_mouse_select(snode, event);
 			}
 			else {
-				if(node_add_link(snode)==0)
-					if(node_mouse_groupheader(snode)==0)
-						if(node_mouse_select(snode, event)==0)
-							node_border_link_delete(snode);
+				
+				if(G.qual &  LR_CTRLKEY) {
+					gesture();
+				} else {
+					if(node_add_link(snode)==0)
+						if(node_mouse_groupheader(snode)==0)
+							if(node_mouse_select(snode, event)==0)
+								node_border_link_delete(snode);
+				}
 			}
 			break;
 			

Modified: trunk/blender/source/blender/src/editview.c
===================================================================
--- trunk/blender/source/blender/src/editview.c	2008-03-22 14:47:42 UTC (rev 14212)
+++ trunk/blender/source/blender/src/editview.c	2008-03-22 20:54:09 UTC (rev 14213)
@@ -60,6 +60,7 @@
 #include "DNA_view3d_types.h"
 #include "DNA_userdef_types.h"
 #include "DNA_ipo_types.h" /* for fly mode recording */
+#include "DNA_node_types.h" /* for fly mode recording */
 
 #include "BLI_blenlib.h"
 #include "BLI_arithb.h"
@@ -107,6 +108,7 @@
 #include "BSE_edit.h"
 #include "BSE_view.h"		/* give_cursor() */
 #include "BSE_editipo.h"
+#include "BSE_drawipo.h"
 #include "BSE_drawview.h"
 
 #include "editmesh.h"	/* borderselect uses it... */
@@ -637,31 +639,64 @@
 	object_tface_flags_changed(OBACT, 0);
 }
 
+static void do_lasso_select_node(short mcords[][2], short moves, short select)
+{
+	SpaceNode *snode = curarea->spacedata.first;
+	
+	bNode *node;
+	rcti rect;
+	short node_cent[2];
+	float node_centf[2];
+	
+	lasso_select_boundbox(&rect, mcords, moves);
+	
+	/* store selection in temp test flag */
+	for(node= snode->edittree->nodes.first; node; node= node->next) {
+		
+		node_centf[0] = (node->totr.xmin+node->totr.xmax)/2;
+		node_centf[1] = (node->totr.ymin+node->totr.ymax)/2;
+		
+		ipoco_to_areaco_noclip(G.v2d, node_centf, node_cent);
+		if (BLI_in_rcti(&rect, node_cent[0], node_cent[1]) && lasso_inside(mcords, moves, node_cent[0], node_cent[1])) {
+			if (select) {
+				node->flag |= SELECT;
+			} else {
+				node->flag &= ~SELECT;
+			}
+		}
+	}
+	allqueue(REDRAWNODE, 1);
+	BIF_undo_push("Lasso select nodes");
+}
+
 static void do_lasso_select(short mcords[][2], short moves, short select)
 {
-	if(G.obedit==NULL) {
-		if(FACESEL_PAINT_TEST)
-			do_lasso_select_facemode(mcords, moves, select);
-		else if(G.f & (G_VERTEXPAINT|G_TEXTUREPAINT|G_WEIGHTPAINT))
-			;
-		else if(G.f & G_PARTICLEEDIT)
-			PE_do_lasso_select(mcords, moves, select);
-		else  
-			do_lasso_select_objects(mcords, moves, select);
+	if(curarea->spacetype==SPACE_NODE) {
+		do_lasso_select_node(mcords, moves, select);
+	} else {
+		if(G.obedit==NULL) {
+			if(FACESEL_PAINT_TEST)
+				do_lasso_select_facemode(mcords, moves, select);
+			else if(G.f & (G_VERTEXPAINT|G_TEXTUREPAINT|G_WEIGHTPAINT))
+				;
+			else if(G.f & G_PARTICLEEDIT)
+				PE_do_lasso_select(mcords, moves, select);
+			else  
+				do_lasso_select_objects(mcords, moves, select);
+		}
+		else if(G.obedit->type==OB_MESH) {
+			if(curarea->spacetype==SPACE_VIEW3D) {
+				do_lasso_select_mesh(mcords, moves, select);
+			} else if (EM_texFaceCheck()){
+				do_lasso_select_mesh_uv(mcords, moves, select);
+			}
+		} else if(G.obedit->type==OB_CURVE || G.obedit->type==OB_SURF) 
+			do_lasso_select_curve(mcords, moves, select);
+		else if(G.obedit->type==OB_LATTICE) 
+			do_lasso_select_lattice(mcords, moves, select);
+		else if(G.obedit->type==OB_ARMATURE)
+			do_lasso_select_armature(mcords, moves, select);
 	}
-	else if(G.obedit->type==OB_MESH) {
-		if(curarea->spacetype==SPACE_VIEW3D) {
-			do_lasso_select_mesh(mcords, moves, select);
-		} else if (EM_texFaceCheck()){
-			do_lasso_select_mesh_uv(mcords, moves, select);
-		}
-	} else if(G.obedit->type==OB_CURVE || G.obedit->type==OB_SURF) 
-		do_lasso_select_curve(mcords, moves, select);
-	else if(G.obedit->type==OB_LATTICE) 
-		do_lasso_select_lattice(mcords, moves, select);
-	else if(G.obedit->type==OB_ARMATURE)
-		do_lasso_select_armature(mcords, moves, select);
-	
 	BIF_undo_push("Lasso select");
 	
 	if (EM_texFaceCheck())
@@ -827,6 +862,8 @@
 			if(G.obedit) {
 				lasso= 1;
 			}
+		} else if (curarea->spacetype==SPACE_NODE) {
+			lasso= 1;
 		}
 	}
 	




More information about the Bf-blender-cvs mailing list