[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32491] trunk/blender/source/blender: bugfix [#24264] toggle UV selection fails.

Campbell Barton ideasman42 at gmail.com
Fri Oct 15 11:07:19 CEST 2010


Revision: 32491
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32491
Author:   campbellbarton
Date:     2010-10-15 11:07:19 +0200 (Fri, 15 Oct 2010)

Log Message:
-----------
bugfix [#24264] toggle UV selection fails.
was using the 4th selection flag on tri's.
also some minor changes, removed unused args and corrected some comments.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
    trunk/blender/source/blender/editors/include/ED_uvedit.h
    trunk/blender/source/blender/editors/mesh/editmesh_add.c
    trunk/blender/source/blender/editors/space_node/node_header.c
    trunk/blender/source/blender/editors/space_node/node_intern.h
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/editors/uvedit/uvedit_ops.c

Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2010-10-15 09:07:19 UTC (rev 32491)
@@ -2237,7 +2237,7 @@
 	Object *obact = scene->basact?scene->basact->object:NULL;
 	int editing = paint_facesel_test(ob);
 	/* weight paint and face select need original indicies because of selection buffer drawing */
-	int needMapping = (ob==obact) && (editing || (ob->mode & (OB_MODE_WEIGHT_PAINT|OB_MODE_VERTEX_PAINT)) || editing);
+	int needMapping = (ob==obact) && (editing || (ob->mode & (OB_MODE_WEIGHT_PAINT|OB_MODE_VERTEX_PAINT)));
 
 	clear_mesh_caches(ob);
 

Modified: trunk/blender/source/blender/editors/include/ED_uvedit.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_uvedit.h	2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/include/ED_uvedit.h	2010-10-15 09:07:19 UTC (rev 32491)
@@ -41,7 +41,6 @@
 void ED_keymap_uvedit(struct wmKeyConfig *keyconf);
 
 void ED_uvedit_assign_image(struct Scene *scene, struct Object *obedit, struct Image *ima, struct Image *previma);
-void ED_uvedit_set_tile(struct bContext *C, struct Scene *scene, struct Object *obedit, struct Image *ima, int curtile, int dotile);
 int ED_uvedit_minmax(struct Scene *scene, struct Image *ima, struct Object *obedit, float *min, float *max);
 
 int ED_uvedit_test_silent(struct Object *obedit);

Modified: trunk/blender/source/blender/editors/mesh/editmesh_add.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_add.c	2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/mesh/editmesh_add.c	2010-10-15 09:07:19 UTC (rev 32491)
@@ -151,7 +151,7 @@
 				project_float_noclip(vc.ar, co1, co1);
 				project_float_noclip(vc.ar, co2, co2);
 				
-				/* 2D rotate by 90d while subtracting
+				/* 2D rotate by 90d while adding.
 				 *  (x, y) = (y, -x)
 				 *
 				 * accumulate the screenspace normal in 2D,
@@ -181,14 +181,11 @@
 			cross_v3_v3v3(cross, nor, view_vec);
 			cross_v3_v3v3(nor, view_vec, cross);
 			normalize_v3(nor);
-			
-			/* correct for flipping */
 		}
 		
 		/* center */
-		add_v3_v3v3(cent, min, max);
-		mul_v3_fl(cent, 0.5f);
-		VECCOPY(min, cent);
+		mid_v3_v3v3(cent, min, max);
+		copy_v3_v3(min, cent);
 		
 		mul_m4_v3(vc.obedit->obmat, min);	// view space
 		view3d_get_view_aligned_coordinate(&vc, min, event->mval);
@@ -201,7 +198,7 @@
 		if(done) {
 			float dot;
 			
-			VECCOPY(vec, min);
+			copy_v3_v3(vec, min);
 			normalize_v3(vec);
 			dot= INPR(vec, nor);
 
@@ -241,7 +238,7 @@
 		float mat[3][3],imat[3][3];
 		float *curs= give_cursor(vc.scene, vc.v3d);
 		
-		VECCOPY(min, curs);
+		copy_v3_v3(min, curs);
 		view3d_get_view_aligned_coordinate(&vc, min, event->mval);
 		
 		eve= addvertlist(vc.em, 0, NULL);
@@ -249,7 +246,7 @@
 		copy_m3_m4(mat, vc.obedit->obmat);
 		invert_m3_m3(imat, mat);
 		
-		VECCOPY(eve->co, min);
+		copy_v3_v3(eve->co, min);
 		mul_m3_v3(imat, eve->co);
 		sub_v3_v3v3(eve->co, eve->co, vc.obedit->obmat[3]);
 		

Modified: trunk/blender/source/blender/editors/space_node/node_header.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_header.c	2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/space_node/node_header.c	2010-10-15 09:07:19 UTC (rev 32491)
@@ -202,7 +202,7 @@
 	}
 }
 
-void node_menus_register(ARegionType *art)
+void node_menus_register(void)
 {
 	MenuType *mt;
 

Modified: trunk/blender/source/blender/editors/space_node/node_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_intern.h	2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/space_node/node_intern.h	2010-10-15 09:07:19 UTC (rev 32491)
@@ -41,7 +41,7 @@
 
 /* node_header.c */
 void node_header_buttons(const bContext *C, ARegion *ar);
-void node_menus_register(struct ARegionType *art);
+void node_menus_register(void);
 
 /* node_draw.c */
 void drawnodespace(const bContext *C, ARegion *ar, View2D *v2d);

Modified: trunk/blender/source/blender/editors/space_node/space_node.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/space_node.c	2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/space_node/space_node.c	2010-10-15 09:07:19 UTC (rev 32491)
@@ -452,7 +452,7 @@
 	
 	BLI_addhead(&st->regiontypes, art);
 
-	node_menus_register(art);
+	node_menus_register();
 	
 	/* regions: listview/buttons */
 	art= MEM_callocN(sizeof(ARegionType), "spacetype node region");

Modified: trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_ops.c	2010-10-15 08:41:58 UTC (rev 32490)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_ops.c	2010-10-15 09:07:19 UTC (rev 32491)
@@ -141,7 +141,7 @@
 
 /* dotile -	1, set the tile flag (from the space image)
  * 			2, set the tile index for the faces. */
-void ED_uvedit_set_tile(bContext *C, Scene *scene, Object *obedit, Image *ima, int curtile)
+static int uvedit_set_tile(Object *obedit, Image *ima, int curtile)
 {
 	EditMesh *em;
 	EditFace *efa;
@@ -149,11 +149,14 @@
 	
 	/* verify if we have something to do */
 	if(!ima || !ED_uvedit_test(obedit))
-		return;
-	
+		return 0;
+
+	if((ima->tpageflag & IMA_TILES) == 0)
+		return 0;
+
 	/* skip assigning these procedural images... */
 	if(ima->type==IMA_TYPE_R_RESULT || ima->type==IMA_TYPE_COMPOSITE)
-		return;
+		return 0;
 	
 	em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
 
@@ -165,8 +168,9 @@
 	}
 
 	DAG_id_flush_update(obedit->data, OB_RECALC_DATA);
-	WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
 	BKE_mesh_end_editmesh(obedit->data, em);
+
+	return 1;
 }
 
 /*********************** space conversion *********************/
@@ -845,7 +849,8 @@
 			tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
 
 			if(uvedit_face_visible(scene, ima, efa, tf)) {
-				if(tf->flag & (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4)) {
+				const char select_flag= efa->v4 ? (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
+				if(tf->flag & select_flag) {
 					stack[stacksize]= a;
 					stacksize++;
 					flag[a]= 1;
@@ -909,12 +914,9 @@
 	else {
 		for(a=0, efa= em->faces.first; efa; efa= efa->next, a++) {
 			if(flag[a]) {
+				const char select_flag= efa->v4 ? (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
 				tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
-				if(efa->v4) {
-					if((tf->flag & (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4)))
-						break;
-				}
-				else if(tf->flag & (TF_SEL1|TF_SEL2|TF_SEL3))
+				if((tf->flag & select_flag))
 					break;
 			}
 		}
@@ -1355,10 +1357,11 @@
 		if (action == SEL_TOGGLE) {
 			action = SEL_SELECT;
 			for(efa= em->faces.first; efa; efa= efa->next) {
+				const char select_flag= efa->v4 ? (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
 				tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
 
 				if(uvedit_face_visible(scene, ima, efa, tf)) {
-					if(tf->flag & (TF_SEL1+TF_SEL2+TF_SEL3+TF_SEL4)) {
+					if(tf->flag & select_flag) {
 						action = SEL_DESELECT;
 						break;
 					}
@@ -1370,13 +1373,8 @@
 			tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
 
 			if(uvedit_face_visible(scene, ima, efa, tf)) {
-				char select_flag;
+				const char select_flag= efa->v4 ? (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
 
-				if(efa->v4)
-					select_flag = (TF_SEL1+TF_SEL2+TF_SEL3+TF_SEL4);
-				else
-					select_flag = (TF_SEL1+TF_SEL2+TF_SEL3);
-
 				switch (action) {
 				case SEL_SELECT:
 					tf->flag |= select_flag;
@@ -1937,14 +1935,10 @@
 		tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
 
 		if(uvedit_face_visible(scene, ima, efa, tf)) {
-			if(efa->v4) {
-				if(~tf->flag & (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4))
-					tf->flag &= ~(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4);
-			}
-			else {
-				if(~tf->flag & (TF_SEL1|TF_SEL2|TF_SEL3))
-					tf->flag &= ~(TF_SEL1|TF_SEL2|TF_SEL3);
-			}
+			const char select_flag= efa->v4 ? (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
+			if(~tf->flag & select_flag)
+				tf->flag &= ~select_flag;
+
 		}
 	}
 	
@@ -2260,7 +2254,7 @@
 
 /* ******************** circle select operator **************** */
 
-static void select_uv_inside_ellipse(SpaceImage *sima, Scene *scene, int select, EditFace *efa, MTFace *tface, int index, float *offset, float *ell, int select_index)
+static void select_uv_inside_ellipse(Scene *scene, int select, EditFace *efa, MTFace *tface, int index, float *offset, float *ell, int select_index)
 {
 	/* normalized ellipse: ell[0] = scaleX, ell[1] = scaleY */
 	float x, y, r2, *uv;
@@ -2309,11 +2303,11 @@
 	/* do selection */
 	for(efa= em->faces.first; efa; efa= efa->next) {
 		tface= CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
-		select_uv_inside_ellipse(sima, scene, select, efa, tface, 0, offset, ellipse, 0);
-		select_uv_inside_ellipse(sima, scene, select, efa, tface, 1, offset, ellipse, 1);
-		select_uv_inside_ellipse(sima, scene, select, efa, tface, 2, offset, ellipse, 2);
+		select_uv_inside_ellipse(scene, select, efa, tface, 0, offset, ellipse, 0);
+		select_uv_inside_ellipse(scene, select, efa, tface, 1, offset, ellipse, 1);
+		select_uv_inside_ellipse(scene, select, efa, tface, 2, offset, ellipse, 2);
 		if(efa->v4)
-			select_uv_inside_ellipse(sima, scene, select, efa, tface, 3, offset, ellipse, 3);
+			select_uv_inside_ellipse(scene, select, efa, tface, 3, offset, ellipse, 3);
 	}
 
 	if(select) EM_select_flush(em);
@@ -2800,11 +2794,9 @@
 					tf->flag &= ~(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4);
 				}
 				else if(em->selectmode == SCE_SELECT_FACE) {
-					if((tf->flag & (TF_SEL1|TF_SEL2|TF_SEL3))==0) {
-						if(!efa->v4)
-							EM_select_face(efa, 0);
-						else if(!(tf->flag & TF_SEL4))
-							EM_select_face(efa, 0);
+					const char select_flag= efa->v4 ? (TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4) : (TF_SEL1|TF_SEL2|TF_SEL3);
+					if((tf->flag & select_flag)==0) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list