Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-11-11 10:25:45 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-11-11 10:25:45 +0400
commit92d35b74e79e63ae95732cf3161e84ace1e79e59 (patch)
tree19a8ecf74bfcae5187a4e25520f4e55384e7707b /source/blender/editors/space_view3d/drawmesh.c
parent67386c003d5d4bd5355323acdfbef1aa9fa2b71d (diff)
parentafeb0eeaf0e8caf5e46a5dd6fbea3786e9fb1354 (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.c28
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);
}