fix for weight paint with face mask enabled drawing with lights.
authorCampbell Barton <ideasman42@gmail.com>
Thu, 6 Oct 2011 05:01:24 +0000 (05:01 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 6 Oct 2011 05:01:24 +0000 (05:01 +0000)
source/blender/editors/space_view3d/drawmesh.c

index 546e5ccba5dc5d5ab5257cf1385f9e19b8516cc4..3cb55c0c10a23a83e5aa92066bb7a7cc98dd7659 100644 (file)
@@ -309,16 +309,24 @@ static int set_draw_settings_cached(int clearcache, MTFace *texface, Material *m
 static void draw_textured_begin(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob)
 {
        unsigned char obcol[4];
-       int istex, solidtex= 0;
+       int istex, solidtex;
 
        // XXX scene->obedit warning
-       if(v3d->drawtype==OB_SOLID || ((ob->mode & OB_MODE_EDIT) && v3d->drawtype!=OB_TEXTURE)) {
+
+       /* texture draw is abused for mask selection mode, do this so wire draw
+        * with face selection in weight paint is not lit. */
+       if((v3d->drawtype <= OB_WIRE) && (ob->mode & OB_MODE_WEIGHT_PAINT)) {
+               solidtex= FALSE;
+               Gtexdraw.islit= 0;
+       }
+       else if(v3d->drawtype==OB_SOLID || ((ob->mode & OB_MODE_EDIT) && v3d->drawtype!=OB_TEXTURE)) {
                /* draw with default lights in solid draw mode and edit mode */
-               solidtex= 1;
+               solidtex= TRUE;
                Gtexdraw.islit= -1;
        }
        else {
                /* draw with lights in the scene otherwise */
+               solidtex= FALSE;
                Gtexdraw.islit= GPU_scene_object_lights(scene, ob, v3d->lay, rv3d->viewmat, !rv3d->is_persp);
        }