Revision: 41402
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41402
Author:   ender79
Date:     2011-10-31 00:34:19 +0000 (Mon, 31 Oct 2011)
Log Message:
-----------
Fix problems with setting (and respecting) correct visibility of rim faces 
created by solidify modifier

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
    branches/bmesh/blender/source/blender/modifiers/intern/MOD_solidify.c

Modified: 
branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c     
2011-10-31 00:28:52 UTC (rev 41401)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c     
2011-10-31 00:34:19 UTC (rev 41402)
@@ -893,16 +893,18 @@
        if( GPU_buffer_legacy(dm) || G.f & G_BACKBUFSEL) {
                DEBUG_VBO( "Using legacy code. cdDM_drawMappedFaces\n" );
                for(i = 0; i < dm->numFaceData; i++, mf++) {
-                       int drawSmooth = (mf->flag & ME_SMOOTH);
-                       int draw= 1;
+                       int drawSmooth = (mf->flag & ME_SMOOTH) != 0;
+                       int draw = (mf->flag & ME_HIDE) == 0;
 
                        orig= (index==NULL) ? i : *index++;
-                       
-                       if(orig == ORIGINDEX_NONE)
-                               draw= setMaterial(mf->mat_nr + 1, NULL);
-                       else if (setDrawOptions != NULL)
-                               draw= setDrawOptions(userData, orig, 
&drawSmooth);
 
+                       if (orig == ORIGINDEX_NONE) {
+                               draw = draw && setMaterial(mf->mat_nr + 1, 
NULL);
+                       }
+                       else if (setDrawOptions != NULL) {
+                               draw = draw && setDrawOptions(userData, orig, 
&drawSmooth);
+                       }
+
                        if(draw) {
                                unsigned char *cp = NULL;
 
@@ -987,7 +989,7 @@
                                        int actualFace = next_actualFace;
                                        MFace *mface= mf + actualFace;
                                        int drawSmooth= (mface->flag & 
ME_SMOOTH);
-                                       int draw = 1;
+                                       int draw = (mf->flag & ME_HIDE) == 0;
                                        int flush = 0;
 
                                        if(i != tottri-1)
@@ -995,10 +997,12 @@
 
                                        orig= (index==NULL) ? actualFace : 
index[actualFace];
 
-                                       if(orig == ORIGINDEX_NONE)
-                                               draw= setMaterial(mface->mat_nr 
+ 1, NULL);
-                                       else if (setDrawOptions != NULL)
-                                               draw= setDrawOptions(userData, 
orig, &drawSmooth);
+                                       if (orig == ORIGINDEX_NONE) {
+                                               draw = draw && 
setMaterial(mface->mat_nr + 1, NULL);
+                                       }
+                                       else if (setDrawOptions != NULL) {
+                                               draw = draw && 
setDrawOptions(userData, orig, &drawSmooth);
+                                       }
        
                                        /* Goal is to draw as long of a 
contiguous triangle
                                           array as possible, so draw when we 
hit either an

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c      
2011-10-31 00:28:52 UTC (rev 41401)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c      
2011-10-31 00:34:19 UTC (rev 41402)
@@ -1991,7 +1991,6 @@
        UvVertMap *vmap;
        UvMapVert *buf;
        MPoly *mp;
-       MLoopUV *luv;
        unsigned int a;
        int     i, totuv, nverts;
 

Modified: branches/bmesh/blender/source/blender/modifiers/intern/MOD_solidify.c
===================================================================
--- branches/bmesh/blender/source/blender/modifiers/intern/MOD_solidify.c       
2011-10-31 00:28:52 UTC (rev 41401)
+++ branches/bmesh/blender/source/blender/modifiers/intern/MOD_solidify.c       
2011-10-31 00:34:19 UTC (rev 41402)
@@ -593,6 +593,10 @@
                        mp->loopstart = j+numLoops*2;
                        mp->flag = mpoly[fidx].flag;
                        mp->totloop = 4;
+
+                       /* ME_HIDE for rim faces should match that of the rim 
edge, not the face the edge */
+                       mp->flag &= ~ME_HIDE;
+                       mp->flag |= ed->flag & ME_HIDE;
                        
                        ml2 = mloop + mpoly[fidx].loopstart;
                        for (k1=0; k1<mpoly[fidx].totloop; k1++, ml2++) {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to