[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