[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