diff options
author | Campbell Barton <ideasman42@gmail.com> | 2007-09-25 07:31:12 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2007-09-25 07:31:12 +0400 |
commit | 2c0db4d707f02f747496308565de0d902d55f5aa (patch) | |
tree | 21d6ece112cb1c14b5a4b85d50f2d3b9b3256246 /source/blender/blenkernel/intern/DerivedMesh.c | |
parent | 3a5db1c40cce63fc97142ee6782d25299a8941a4 (diff) |
made active vert/edge/face draw properly with modifiers applied and made their theme default white.
removed active face draw in Face/UV (which is now paint mask mode) mode.
Diffstat (limited to 'source/blender/blenkernel/intern/DerivedMesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index ff98f6f642e..299bbc10241 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -633,9 +633,10 @@ static void emDM_foreachMappedFaceCenter(DerivedMesh *dm, void (*func)(void *use } static void emDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *userData, int index, int *drawSmooth_r), void *userData, int useColors) { + GLubyte act_face_stipple[32*32/8] = DM_FACE_STIPPLE; EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm; EditFace *efa; - int i; + int i, draw; if (emdm->vertexCos) { EditVert *eve; @@ -645,7 +646,13 @@ static void emDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) { int drawSmooth = (efa->flag & ME_SMOOTH); - if(!setDrawOptions || setDrawOptions(userData, i, &drawSmooth)) { + draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, i, &drawSmooth); + if(draw) { + if (draw==2) { /* enabled with stipple */ + glEnable(GL_POLYGON_STIPPLE); + glPolygonStipple(act_face_stipple); + } + glShadeModel(drawSmooth?GL_SMOOTH:GL_FLAT); glBegin(efa->v4?GL_QUADS:GL_TRIANGLES); @@ -668,12 +675,20 @@ static void emDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us } } glEnd(); + + if (draw==2) + glDisable(GL_POLYGON_STIPPLE); } } } else { for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) { int drawSmooth = (efa->flag & ME_SMOOTH); - if(!setDrawOptions || setDrawOptions(userData, i, &drawSmooth)) { + draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, i, &drawSmooth); + if(draw) { + if (draw==2) { /* enabled with stipple */ + glEnable(GL_POLYGON_STIPPLE); + glPolygonStipple(act_face_stipple); + } glShadeModel(drawSmooth?GL_SMOOTH:GL_FLAT); glBegin(efa->v4?GL_QUADS:GL_TRIANGLES); @@ -696,6 +711,9 @@ static void emDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us } } glEnd(); + + if (draw==2) + glDisable(GL_POLYGON_STIPPLE); } } } |