diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-11-11 10:25:45 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-11-11 10:25:45 +0400 |
commit | 92d35b74e79e63ae95732cf3161e84ace1e79e59 (patch) | |
tree | 19a8ecf74bfcae5187a4e25520f4e55384e7707b /source/blender/editors/space_view3d/drawmesh.c | |
parent | 67386c003d5d4bd5355323acdfbef1aa9fa2b71d (diff) | |
parent | afeb0eeaf0e8caf5e46a5dd6fbea3786e9fb1354 (diff) |
svn merge -r41722:41723 ^/trunk/blender
Diffstat (limited to 'source/blender/editors/space_view3d/drawmesh.c')
-rw-r--r-- | source/blender/editors/space_view3d/drawmesh.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index 56215f6523c..29a35187719 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -405,6 +405,13 @@ static int draw_tface__set_draw_legacy(MTFace *tface, int has_mcol, int matnr) return 1; /* Set color from mcol */ } } + +static int draw_mcol__set_draw_legacy(MTFace *tface, int has_mcol, int matnr) +{ + if (has_mcol) return 1; + else return 2; +} + static int draw_tface__set_draw(MTFace *tface, int has_mcol, int matnr) { Material *ma= give_current_material(Gtexdraw.ob, matnr+1); @@ -649,7 +656,7 @@ static void draw_mesh_text(Scene *scene, Object *ob, int glsl) ddm->release(ddm); } -void draw_mesh_textured_old(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, DerivedMesh *dm, int faceselect) +void draw_mesh_textured_old(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, DerivedMesh *dm, int draw_flags) { Mesh *me= ob->data; @@ -671,7 +678,7 @@ void draw_mesh_textured_old(Scene *scene, View3D *v3d, RegionView3D *rv3d, Objec dm->drawMappedFacesTex(dm, draw_em_tf_mapped__set_draw, &data); } - else if(faceselect) { + else if(draw_flags & DRAW_FACE_SELECT) { if(ob->mode & OB_MODE_WEIGHT_PAINT) dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions, me, 1, GPU_enable_material, NULL); else @@ -679,7 +686,10 @@ void draw_mesh_textured_old(Scene *scene, View3D *v3d, RegionView3D *rv3d, Objec } else { if(GPU_buffer_legacy(dm)) { - dm->drawFacesTex(dm, draw_tface__set_draw_legacy); + if (draw_flags & DRAW_DYNAMIC_PAINT_PREVIEW) + dm->drawFacesTex(dm, draw_mcol__set_draw_legacy); + else + dm->drawFacesTex(dm, draw_tface__set_draw_legacy); } else { if(!CustomData_has_layer(&dm->faceData,CD_TEXTURE_MCOL)) @@ -696,7 +706,7 @@ void draw_mesh_textured_old(Scene *scene, View3D *v3d, RegionView3D *rv3d, Objec draw_textured_end(); /* draw edges and selected faces over textured mesh */ - if(!(ob == scene->obedit) && faceselect) + if(!(ob == scene->obedit) && (draw_flags & DRAW_FACE_SELECT)) draw_mesh_face_select(rv3d, me, dm); /* reset from negative scale correction */ @@ -807,10 +817,10 @@ static int tex_mat_set_face_editmesh_cb(void *userData, int index) return !BM_TestHFlag(efa, BM_HIDDEN); } -void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, DerivedMesh *dm, int faceselect) +void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, DerivedMesh *dm, int draw_flags) { - if(!scene_use_new_shading_nodes(scene)) { - draw_mesh_textured_old(scene, v3d, rv3d, ob, dm, faceselect); + if((!scene_use_new_shading_nodes(scene)) || (draw_flags & DRAW_DYNAMIC_PAINT_PREVIEW)) { + draw_mesh_textured_old(scene, v3d, rv3d, ob, dm, draw_flags); return; } @@ -836,7 +846,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *o /* face hiding callback depending on mode */ if(ob == scene->obedit) set_face_cb= tex_mat_set_face_editmesh_cb; - else if(faceselect) + else if(draw_flags & DRAW_FACE_SELECT) set_face_cb= tex_mat_set_face_mesh_cb; else set_face_cb= NULL; @@ -880,7 +890,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *o glMatrixMode(GL_MODELVIEW); /* faceselect mode drawing over textured mesh */ - if(!(ob == scene->obedit) && faceselect) + if(!(ob == scene->obedit) && (draw_flags & DRAW_FACE_SELECT)) draw_mesh_face_select(rv3d, ob->data, dm); } |