[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11997] trunk/blender/source/blender: Changes to "Face Select" mode

Campbell Barton cbarton at metavr.com
Mon Sep 10 21:32:44 CEST 2007


Revision: 11997
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11997
Author:   campbellbarton
Date:     2007-09-10 21:32:44 +0200 (Mon, 10 Sep 2007)

Log Message:
-----------
Changes to "Face Select" mode
* Does not indicate that UV's exist, nor does it add UV's when used.
* Only accessible for texturepaint, vertexpaint and weightpaint from a button in the header (Paint Selection Mask)
* Not accessible from the mode menu, this is only an option that applies to paint modes.

This dosnt effect DNA, face select (G_FACESELECT) can be enabled at any time but is only used when paint modes are enabled.

Other changes
* UKey is uv unwrap in editmode, Ukey for undo was editmode only anyway.
* UVCalc in editmode adds a UV Layer if there is not one alredy.
* texture draw in editmode does not draw the face dots (they are get in the way of texturing)
* some missing updates were added.
* removed manipulator from when paint modes are enabled since the manipulator is not drawn in the 3d view.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_global.h
    trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
    trunk/blender/source/blender/include/BDR_editface.h
    trunk/blender/source/blender/python/api2_2x/Mesh.c
    trunk/blender/source/blender/src/buttons_editing.c
    trunk/blender/source/blender/src/buttons_shading.c
    trunk/blender/source/blender/src/drawmesh.c
    trunk/blender/source/blender/src/drawobject.c
    trunk/blender/source/blender/src/drawscene.c
    trunk/blender/source/blender/src/drawview.c
    trunk/blender/source/blender/src/edit.c
    trunk/blender/source/blender/src/editarmature.c
    trunk/blender/source/blender/src/editface.c
    trunk/blender/source/blender/src/editmesh.c
    trunk/blender/source/blender/src/editmesh_add.c
    trunk/blender/source/blender/src/editmesh_mods.c
    trunk/blender/source/blender/src/editobject.c
    trunk/blender/source/blender/src/editscreen.c
    trunk/blender/source/blender/src/editsima.c
    trunk/blender/source/blender/src/editview.c
    trunk/blender/source/blender/src/header_info.c
    trunk/blender/source/blender/src/header_view3d.c
    trunk/blender/source/blender/src/outliner.c
    trunk/blender/source/blender/src/poseobject.c
    trunk/blender/source/blender/src/space.c
    trunk/blender/source/blender/src/toolbox.c
    trunk/blender/source/blender/src/transform_manipulator.c
    trunk/blender/source/blender/src/unwrapper.c
    trunk/blender/source/blender/src/view.c

Modified: trunk/blender/source/blender/blenkernel/BKE_global.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_global.h	2007-09-10 17:42:37 UTC (rev 11996)
+++ trunk/blender/source/blender/blenkernel/BKE_global.h	2007-09-10 19:32:44 UTC (rev 11997)
@@ -176,6 +176,7 @@
 #define G_DRAWSEAMS     (1 << 20)
 #define G_HIDDENEDGES   (1 << 21)
 
+
 /* Measurement info Drawing */
 #define G_DRAW_EDGELEN  (1 << 22) 
 #define G_DRAW_FACEAREA (1 << 23)
@@ -193,6 +194,11 @@
 
 #define G_AUTOMATKEYS	(1 << 30)
 
+/* macro for testing face select mode
+ * Texture paint could be removed since selected faces are not used
+ * however hiding faces is useful */
+#define FACESEL_PAINT_TEST ((G.f&G_FACESELECT) && (G.f & (G_VERTEXPAINT|G_WEIGHTPAINT|G_TEXTUREPAINT))) 
+
 /* G.fileflags */
 
 #define G_AUTOPACK               (1 << 0)

Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2007-09-10 17:42:37 UTC (rev 11996)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2007-09-10 19:32:44 UTC (rev 11997)
@@ -1782,7 +1782,7 @@
 	ScrArea *sa;
 
 	/* check if we need tfaces & mcols due to face select or texture paint */
-	if(G.f & G_FACESELECT || G.f & G_TEXTUREPAINT) {
+	if(FACESEL_PAINT_TEST || G.f & G_TEXTUREPAINT) {
 		mask |= CD_MASK_MTFACE | CD_MASK_MCOL;
 	} else {
 		/* check if we need tfaces & mcols due to view mode */
@@ -2325,7 +2325,7 @@
 
 	if(ob!=G.obedit) {
 		Object *obact = G.scene->basact?G.scene->basact->object:NULL;
-		int editing = (G.f & (G_FACESELECT|G_WEIGHTPAINT|G_VERTEXPAINT|G_TEXTUREPAINT));
+		int editing = (FACESEL_PAINT_TEST);
 		int needMapping = editing && (ob==obact);
 
 		if( (G.f & G_WEIGHTPAINT) && ob==obact ) {

Modified: trunk/blender/source/blender/include/BDR_editface.h
===================================================================
--- trunk/blender/source/blender/include/BDR_editface.h	2007-09-10 17:42:37 UTC (rev 11996)
+++ trunk/blender/source/blender/include/BDR_editface.h	2007-09-10 19:32:44 UTC (rev 11997)
@@ -53,7 +53,6 @@
 void face_select(void);
 void face_borderselect(void);
 void uv_autocalc_tface(void);
-void set_faceselect(void);
 void set_texturepaint(void);
 void get_same_uv(void);  
 void seam_mark_clear_tface(short mode);

Modified: trunk/blender/source/blender/python/api2_2x/Mesh.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Mesh.c	2007-09-10 17:42:37 UTC (rev 11996)
+++ trunk/blender/source/blender/python/api2_2x/Mesh.c	2007-09-10 19:32:44 UTC (rev 11997)
@@ -6925,7 +6925,7 @@
 			if(type == CD_MCOL && (G.f & G_VERTEXPAINT))
 				G.f &= ~G_VERTEXPAINT; /* get out of vertexpaint mode */
 			if(type == CD_MTFACE && (G.f & G_FACESELECT))
-				set_faceselect();  /* get out of faceselect mode */
+				G.f |= ~G_FACESELECT; /* get out of faceselect mode */
 		}
 	}
 	

Modified: trunk/blender/source/blender/src/buttons_editing.c
===================================================================
--- trunk/blender/source/blender/src/buttons_editing.c	2007-09-10 17:42:37 UTC (rev 11996)
+++ trunk/blender/source/blender/src/buttons_editing.c	2007-09-10 19:32:44 UTC (rev 11997)
@@ -536,7 +536,7 @@
 			if(G.obedit->type == OB_MESH) reveal_mesh();
 			else if ELEM(G.obedit->type, OB_CURVE, OB_SURF) revealNurb();
 		}
-		else if(G.f & G_FACESELECT) reveal_tface();
+		else if(FACESEL_PAINT_TEST) reveal_tface();
 		
 		break;
 	case B_SELSWAP:
@@ -719,8 +719,6 @@
 	if(!CustomData_has_layer(data, type)) {
 		if(type == CD_MCOL && (G.f & G_VERTEXPAINT))
 			G.f &= ~G_VERTEXPAINT; /* get out of vertexpaint mode */
-		/*if(type == CD_MTFACE && (G.f & G_FACESELECT))
-			set_faceselect();*/  /* get out of faceselect mode */
 	}
 
 	/*reconstruct active layer*/
@@ -4875,7 +4873,7 @@
 		}
 		break;
 	case B_SET_VCOL:
-		if(G.f & G_FACESELECT) 
+		if(FACESEL_PAINT_TEST) 
 			clear_vpaint_selectedfaces();
 		else
 			clear_vpaint();
@@ -5473,7 +5471,7 @@
 			uiNewPanelTabbed("Multires", "Editing");
 			editing_panel_sculpting_textures();
 		} else {
-			if(G.f & G_FACESELECT) {
+			if(FACESEL_PAINT_TEST) {
 				editing_panel_mesh_texface();
 				editing_panel_mesh_uvautocalculation(); /* draw hidden edge option from this needs to be elsewhere */
 			}

Modified: trunk/blender/source/blender/src/buttons_shading.c
===================================================================
--- trunk/blender/source/blender/src/buttons_shading.c	2007-09-10 17:42:37 UTC (rev 11996)
+++ trunk/blender/source/blender/src/buttons_shading.c	2007-09-10 19:32:44 UTC (rev 11997)
@@ -1161,7 +1161,7 @@
 		 }
 		 
 		 /* exception, let's do because we only use this panel 3 times in blender... but not real good code! */
-		 if( (G.f & G_FACESELECT) && G.sima && &G.sima->iuser==iuser)
+		 if( (FACESEL_PAINT_TEST) && G.sima && &G.sima->iuser==iuser)
 			 return;
 		 /* left side default per-image options, right half the additional options */
 		 

Modified: trunk/blender/source/blender/src/drawmesh.c
===================================================================
--- trunk/blender/source/blender/src/drawmesh.c	2007-09-10 17:42:37 UTC (rev 11996)
+++ trunk/blender/source/blender/src/drawmesh.c	2007-09-10 19:32:44 UTC (rev 11997)
@@ -1205,7 +1205,7 @@
 		if(ob==G.obedit)
 			editing= 1;
 		else if(ob==OBACT)
-			if(G.f & (G_VERTEXPAINT+G_FACESELECT+G_TEXTUREPAINT+G_WEIGHTPAINT))
+			if(FACESEL_PAINT_TEST)
 				editing= 1;
 
 		if(!editing)

Modified: trunk/blender/source/blender/src/drawobject.c
===================================================================
--- trunk/blender/source/blender/src/drawobject.c	2007-09-10 17:42:37 UTC (rev 11996)
+++ trunk/blender/source/blender/src/drawobject.c	2007-09-10 19:32:44 UTC (rev 11997)
@@ -1632,7 +1632,7 @@
 				draw_dm_verts(cageDM, sel);
 			}
 			
-			if(G.scene->selectmode & SCE_SELECT_FACE) {
+			if(G.scene->selectmode & SCE_SELECT_FACE && G.vd->drawtype!=OB_TEXTURE) {
 				glPointSize(fsize);
 				glColor4ubv((GLubyte *)fcol);
 				draw_dm_face_centers(cageDM, sel);
@@ -1974,7 +1974,7 @@
 		}
 	}
 	
-	if((G.f & (G_FACESELECT+G_DRAWFACES))) {	/* transp faces */
+	if((G.f & (G_DRAWFACES)) || FACESEL_PAINT_TEST) {	/* transp faces */
 		unsigned char col1[4], col2[4];
 			
 		BIF_GetThemeColor4ubv(TH_FACE, (char *)col1);
@@ -2120,7 +2120,7 @@
 		glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW);
 
 		// Unwanted combination.
-	if (ob==OBACT && (G.f&G_FACESELECT)) draw_wire = 0;
+	if (ob==OBACT && FACESEL_PAINT_TEST) draw_wire = 0;
 
 	if(dt==OB_BOUNDBOX) {
 		draw_bounding_volume(ob);
@@ -2133,10 +2133,10 @@
 	else if(dt==OB_WIRE || totface==0) {
 		draw_wire = 1;
 	}
-	else if( (ob==OBACT && (G.f & (G_FACESELECT|G_TEXTUREPAINT))) || (G.vd->drawtype==OB_TEXTURE && dt>OB_SOLID)) {
-		int faceselect= (ob==OBACT && (G.f & G_FACESELECT));
+	else if( (ob==OBACT && (G.f & G_TEXTUREPAINT || FACESEL_PAINT_TEST)) || (G.vd->drawtype==OB_TEXTURE && dt>OB_SOLID)) {
+		int faceselect= (ob==OBACT && FACESEL_PAINT_TEST);
 
-		if ((G.vd->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !(G.f&(G_FACESELECT|G_PICKSEL)) && !draw_wire) {
+		if ((G.vd->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !(G.f&G_PICKSEL || FACESEL_PAINT_TEST) && !draw_wire) {
 			draw_mesh_object_outline(ob, dm);
 		}
 
@@ -3881,7 +3881,7 @@
 	dtx= 0;
 
 	/* faceselect exception: also draw solid when dt==wire, except in editmode */
-	if(ob==OBACT && (G.f & (G_FACESELECT+G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT))) {
+	if(ob==OBACT && (G.f & (G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT))) {
 		if(ob->type==OB_MESH) {
 
 			if(ob==G.obedit);
@@ -4142,7 +4142,7 @@
 	if(G.f & G_SIMULATION) return;
 
 	/* object centers, need to be drawn in viewmat space for speed, but OK for picking select */
-	if(ob!=OBACT || (G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT))==0) {
+	if(ob!=OBACT || (G.f & (G_VERTEXPAINT|G_TEXTUREPAINT|G_WEIGHTPAINT))==0) {
 		int do_draw_center= -1;	/* defines below are zero or positive... */
 
 		if((G.scene->basact)==base) 
@@ -4327,7 +4327,7 @@
 	if (facecol) {
 		dm->drawMappedFaces(dm, bbs_mesh_solid__setSolidDrawOptions, (void*)(long) 1, 0);
 
-		if(G.scene->selectmode & SCE_SELECT_FACE) {
+		if(G.scene->selectmode & SCE_SELECT_FACE && G.vd->drawtype!=OB_TEXTURE) {
 			glPointSize(BIF_GetThemeValuef(TH_FACEDOT_SIZE));
 		
 			bglBegin(GL_POINTS);
@@ -4367,6 +4367,7 @@
 		return 0;
 }
 
+/* TODO remove this - since face select mode now only works with painting */
 static void bbs_mesh_solid(Object *ob)
 {
 	DerivedMesh *dm = mesh_get_derived_final(ob, get_viewedit_datamask());

Modified: trunk/blender/source/blender/src/drawscene.c
===================================================================
--- trunk/blender/source/blender/src/drawscene.c	2007-09-10 17:42:37 UTC (rev 11996)
+++ trunk/blender/source/blender/src/drawscene.c	2007-09-10 19:32:44 UTC (rev 11997)
@@ -74,8 +74,6 @@
 	if( G.obedit) 
 		exit_editmode(EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR);
 	
-	if(G.f & G_FACESELECT)
-		set_faceselect();
 	if(G.f & G_VERTEXPAINT)
 		set_vpaint();
 	if(G.f & G_TEXTUREPAINT)

Modified: trunk/blender/source/blender/src/drawview.c
===================================================================
--- trunk/blender/source/blender/src/drawview.c	2007-09-10 17:42:37 UTC (rev 11996)
+++ trunk/blender/source/blender/src/drawview.c	2007-09-10 19:32:44 UTC (rev 11997)
@@ -1077,7 +1077,7 @@
 	int m;
 #endif
 
-	if(G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT));
+	if(G.f & G_VERTEXPAINT || G.f & G_WEIGHTPAINT || G.f & G_TEXTUREPAINT);
 	else if(G.obedit && G.vd->drawtype>OB_WIRE && (G.vd->flag & V3D_ZBUF_SELECT));
 	else {
 		G.vd->flag &= ~V3D_NEEDBACKBUFDRAW;
@@ -2238,7 +2238,7 @@
 
 	uiSetButLock(object_data_is_libdata(ob), ERROR_LIBDATA_MESSAGE);
 	
-	if(G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT)) {
+	if(G.f & (G_VERTEXPAINT|G_TEXTUREPAINT|G_WEIGHTPAINT)) {
 		uiBlockSetFlag(block, UI_BLOCK_FRONTBUFFER);	// force old style frontbuffer draw
 	}
 	else {
@@ -2383,7 +2383,7 @@
 	uiSetPanelHandler(VIEW3D_HANDLER_BACKGROUND);  // for close and esc
 	if(uiNewPanel(curarea, block, "Background Image", "View3d", 340, 10, 318, 204)==0) return;
 
-	if(G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT)) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list