[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43889] branches/bmesh/blender/source/ blender/editors: fix for weight paint face selection.

Campbell Barton ideasman42 at gmail.com
Sun Feb 5 04:25:28 CET 2012


Revision: 43889
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43889
Author:   campbellbarton
Date:     2012-02-05 03:25:13 +0000 (Sun, 05 Feb 2012)
Log Message:
-----------
fix for weight paint face selection.

since removing tesselation faces we can no longer rely on me->totface & me->mface being set. now use polygons instead.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/editors/mesh/editface.c
    branches/bmesh/blender/source/blender/editors/space_view3d/drawmesh.c
    branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c
    branches/bmesh/blender/source/blender/editors/space_view3d/view3d_select.c

Modified: branches/bmesh/blender/source/blender/editors/mesh/editface.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/editface.c	2012-02-05 02:30:30 UTC (rev 43888)
+++ branches/bmesh/blender/source/blender/editors/mesh/editface.c	2012-02-05 03:25:13 UTC (rev 43889)
@@ -147,7 +147,7 @@
 		   on an edge in the backbuf, we can still select a face */
 
 		int dist;
-		*index = view3d_sample_backbuf_rect(&vc, mval, 3, 1, me->totface+1, &dist,0,NULL, NULL);
+		*index = view3d_sample_backbuf_rect(&vc, mval, 3, 1, me->totpoly+1, &dist,0,NULL, NULL);
 	}
 	else {
 		/* sample only on the exact position */
@@ -610,10 +610,8 @@
 	int sy= rect->ymax-rect->ymin+1;
 	
 	me= get_mesh(ob);
-	if(me==0) return 0;
-	if(me->totpoly==0) return 0;
 
-	if(me==NULL || me->totface==0 || sx*sy <= 0)
+	if(me==NULL || me->totpoly==0 || sx*sy <= 0)
 		return OPERATOR_CANCELLED;
 
 	selar= MEM_callocN(me->totpoly+1, "selar");
@@ -640,7 +638,7 @@
 	while(a--) {
 		if(*rt) {
 			index= WM_framebuffer_to_index(*rt);
-			if(index<=me->totface) selar[index]= 1;
+			if(index<=me->totpoly) selar[index]= 1;
 		}
 		rt++;
 	}

Modified: branches/bmesh/blender/source/blender/editors/space_view3d/drawmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/space_view3d/drawmesh.c	2012-02-05 02:30:30 UTC (rev 43888)
+++ branches/bmesh/blender/source/blender/editors/space_view3d/drawmesh.c	2012-02-05 03:25:13 UTC (rev 43889)
@@ -115,25 +115,23 @@
 static EdgeHash *get_tface_mesh_marked_edge_info(Mesh *me)
 {
 	EdgeHash *eh = BLI_edgehash_new();
-	MFace *mf;
-	int i;
+	MPoly *mp;
+	MLoop *ml;
+	MLoop *ml_next;
+	int i, j;
 	
-	for(i=0; i<me->totface; i++) {
-		mf = &me->mface[i];
+	for(i=0; i<me->totpoly; i++) {
+		mp = &me->mpoly[i];
 
-		if(!(mf->flag & ME_HIDE)) {
+		if (!(mp->flag & ME_HIDE)) {
 			unsigned int flags = eEdge_Visible;
-			if(mf->flag & ME_FACE_SEL) flags |= eEdge_Select;
+			if (mp->flag & ME_FACE_SEL) flags |= eEdge_Select;
 
-			get_marked_edge_info__orFlags(eh, mf->v1, mf->v2, flags);
-			get_marked_edge_info__orFlags(eh, mf->v2, mf->v3, flags);
-
-			if(mf->v4) {
-				get_marked_edge_info__orFlags(eh, mf->v3, mf->v4, flags);
-				get_marked_edge_info__orFlags(eh, mf->v4, mf->v1, flags);
+			ml = me->mloop + mp->loopstart;
+			for (j=0; j<mp->totloop; j++, ml++) {
+				ml_next = ME_POLY_LOOP_NEXT(me->mloop, mp, j);
+				get_marked_edge_info__orFlags(eh, ml->v, ml_next->v, flags);
 			}
-			else
-				get_marked_edge_info__orFlags(eh, mf->v3, mf->v1, flags);
 		}
 	}
 
@@ -592,8 +590,8 @@
 static int wpaint__setSolidDrawOptions_facemask(void *userData, int index, int *drawSmooth_r)
 {
 	Mesh *me = (Mesh*)userData;
-	MFace *mface = &me->mface[index];
-	if (mface->flag & ME_HIDE) return 0;
+	MPoly *mp = &me->mpoly[index];
+	if (mp->flag & ME_HIDE) return 0;
 	*drawSmooth_r = 1;
 	return 1;
 }
@@ -863,9 +861,9 @@
 	/* faceselect mode face hiding */
 	TexMatCallback *data= (TexMatCallback*)userData;
 	Mesh *me = (Mesh*)data->me;
-	MPoly *mface = &me->mpoly[index];
+	MPoly *mp = &me->mpoly[index];
 
-	return !(mface->flag & ME_HIDE);
+	return !(mp->flag & ME_HIDE);
 }
 
 static int tex_mat_set_face_editmesh_cb(void *userData, int index)

Modified: branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c	2012-02-05 02:30:30 UTC (rev 43888)
+++ branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c	2012-02-05 03:25:13 UTC (rev 43889)
@@ -3239,7 +3239,7 @@
 			/* weight paint in solid mode, special case. focus on making the weights clear
 			 * rather than the shading, this is also forced in wire view */
 			GPU_enable_material(0, NULL);
-			dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions, GPU_enable_material, NULL, me->mface, 1);
+			dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions, GPU_enable_material, NULL, me->mpoly, 1);
 		
 			bglPolygonOffset(rv3d->dist, 1.0);
 			glDepthMask(0);	// disable write in zbuffer, selected edge wires show better
@@ -3364,7 +3364,7 @@
 				glEnable(GL_LIGHTING);
 				glEnable(GL_COLOR_MATERIAL);
 
-				dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions, GPU_enable_material, NULL, me->mface, 1);
+				dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions, GPU_enable_material, NULL, me->mpoly, 1);
 				glDisable(GL_COLOR_MATERIAL);
 				glDisable(GL_LIGHTING);
 
@@ -7144,7 +7144,7 @@
 {
 	Mesh *me = userData;
 
-	if (!(me->mface[index].flag&ME_HIDE)) {
+	if (!(me->mpoly[index].flag&ME_HIDE)) {
 		WM_set_framebuffer_index_color(index+1);
 		return 1;
 	} else {
@@ -7157,7 +7157,7 @@
 {
 	Mesh *me = userData;
 
-	if (!(me->mface[index].flag & ME_HIDE)) {
+	if (!(me->mpoly[index].flag & ME_HIDE)) {
 		return 1;
 	} else {
 		return 0;

Modified: branches/bmesh/blender/source/blender/editors/space_view3d/view3d_select.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/space_view3d/view3d_select.c	2012-02-05 02:30:30 UTC (rev 43888)
+++ branches/bmesh/blender/source/blender/editors/space_view3d/view3d_select.c	2012-02-05 03:25:13 UTC (rev 43889)
@@ -857,7 +857,7 @@
 	Mesh *me= ob?ob->data:NULL;
 	rcti rect;
 
-	if(me==NULL || me->totface==0)
+	if(me==NULL || me->totpoly==0)
 		return;
 
 	if(extend==0 && select)




More information about the Bf-blender-cvs mailing list