[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13142] trunk/blender/source/blender/src/ editparticle.c: Check for screen bounds clipping in particle editmode.

Campbell Barton ideasman42 at gmail.com
Sat Jan 5 22:49:10 CET 2008


Revision: 13142
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13142
Author:   campbellbarton
Date:     2008-01-05 22:49:09 +0100 (Sat, 05 Jan 2008)

Log Message:
-----------
Check for screen bounds clipping in particle editmode. (thanks to valgrind again)

Modified Paths:
--------------
    trunk/blender/source/blender/src/editparticle.c

Modified: trunk/blender/source/blender/src/editparticle.c
===================================================================
--- trunk/blender/source/blender/src/editparticle.c	2008-01-05 19:15:28 UTC (rev 13141)
+++ trunk/blender/source/blender/src/editparticle.c	2008-01-05 21:49:09 UTC (rev 13142)
@@ -244,6 +244,10 @@
 	short vertco[2];
 
 	project_short(co,vertco);
+	
+	if (vertco[0]==IS_CLIPPED)
+		return 0;
+	
 	dx=(float)(mco[0]-vertco[0]);
 	dy=(float)(mco[1]-vertco[1]);
 	dist=(float)sqrt((double)(dx*dx + dy*dy));
@@ -261,6 +265,9 @@
 
 	project_short(co,vertco);
 
+	if (vertco[0]==IS_CLIPPED)
+		return 0;
+	
 	if(vertco[0] > rect->xmin && vertco[0] < rect->xmax &&
 			vertco[1] > rect->ymin && vertco[1] < rect->ymax)
 		return 1;
@@ -278,7 +285,10 @@
 			(GLint *)mats->viewport, &ux, &uy, &uz );
 
 	project_short(co,wco);
-
+	
+	if (wco[0]==IS_CLIPPED)
+		return 0;
+	
 	x=wco[0];
 	y=wco[1];
 
@@ -1453,7 +1463,7 @@
 				VECCOPY(co, key->co);
 				Mat4MulVecfl(mat, co);
 				project_short(co,vertco);
-				if(lasso_inside(mcords,moves,vertco[0],vertco[1])){
+				if((vertco[0] != IS_CLIPPED) && lasso_inside(mcords,moves,vertco[0],vertco[1])){
 					if(select && !(key->flag & PEK_SELECT)) {
 						key->flag|=PEK_SELECT;
 						pa->flag |= PARS_EDIT_RECALC;
@@ -1471,7 +1481,7 @@
 			VECCOPY(co, key->co);
 			Mat4MulVecfl(mat, co);
 			project_short(co,vertco);
-			if(lasso_inside(mcords,moves,vertco[0],vertco[1])){
+			if((vertco[0] != IS_CLIPPED) && lasso_inside(mcords,moves,vertco[0],vertco[1])){
 				if(select && !(key->flag & PEK_SELECT)) {
 					key->flag|=PEK_SELECT;
 					pa->flag |= PARS_EDIT_RECALC;
@@ -2018,7 +2028,7 @@
 
 	cut=0;
 
-	project_short(key->co, vertco);
+	project_short_noclip(key->co, vertco);
 	x0 = (float)vertco[0];
 	x1 = (float)vertco[1];
 
@@ -2036,7 +2046,7 @@
 	else {
 		/* calculate path time closest to root that was inside the circle */
 		for(k=1, key++; k<=keys; k++, key++){
-			project_short(key->co, vertco);
+			project_short_noclip(key->co, vertco);
 
 			v0 = (float)vertco[0] - x0;
 			v1 = (float)vertco[1] - x1;





More information about the Bf-blender-cvs mailing list