Overlay: Make overlay engine rebder on top of paint modes.

This puts the wireframe on top of the weight in weight paint mode,
sculpt mode ...

Wireframe should be colored differently if the object is in paint mode
but it's not there yet.
This commit is contained in:
Clément Foucault 2018-06-28 16:12:24 +02:00
parent 8caedc27d9
commit aacd15e8a9
1 changed files with 30 additions and 13 deletions

View File

@ -1021,6 +1021,27 @@ static void drw_engines_enable_from_object_mode(void)
use_drw_engine(&draw_engine_motion_path_type);
}
static void drw_engines_enable_from_paint_mode(int mode)
{
switch (mode) {
case CTX_MODE_SCULPT:
use_drw_engine(&draw_engine_sculpt_type);
break;
case CTX_MODE_PAINT_WEIGHT:
use_drw_engine(&draw_engine_pose_type);
use_drw_engine(&draw_engine_paint_weight_type);
break;
case CTX_MODE_PAINT_VERTEX:
use_drw_engine(&draw_engine_paint_vertex_type);
break;
case CTX_MODE_PAINT_TEXTURE:
use_drw_engine(&draw_engine_paint_texture_type);
break;
default:
break;
}
}
static void drw_engines_enable_from_mode(int mode)
{
switch (mode) {
@ -1048,22 +1069,15 @@ static void drw_engines_enable_from_mode(int mode)
case CTX_MODE_POSE:
use_drw_engine(&draw_engine_pose_type);
break;
case CTX_MODE_SCULPT:
use_drw_engine(&draw_engine_sculpt_type);
break;
case CTX_MODE_PAINT_WEIGHT:
use_drw_engine(&draw_engine_pose_type);
use_drw_engine(&draw_engine_paint_weight_type);
break;
case CTX_MODE_PAINT_VERTEX:
use_drw_engine(&draw_engine_paint_vertex_type);
break;
case CTX_MODE_PAINT_TEXTURE:
use_drw_engine(&draw_engine_paint_texture_type);
break;
case CTX_MODE_PARTICLE:
use_drw_engine(&draw_engine_particle_type);
break;
case CTX_MODE_SCULPT:
case CTX_MODE_PAINT_WEIGHT:
case CTX_MODE_PAINT_VERTEX:
case CTX_MODE_PAINT_TEXTURE:
/* Should have already been enabled */
break;
case CTX_MODE_OBJECT:
break;
default:
@ -1096,6 +1110,8 @@ static void drw_engines_enable(ViewLayer *view_layer, RenderEngineType *engine_t
drw_engines_enable_from_engine(engine_type, drawtype, v3d->shading.flag);
if (DRW_state_draw_support()) {
/* Draw paint modes first so that they are drawn below the wireframes. */
drw_engines_enable_from_paint_mode(mode);
drw_engines_enable_from_overlays(v3d->overlay.flag);
drw_engines_enable_from_object_mode();
drw_engines_enable_from_mode(mode);
@ -1648,6 +1664,7 @@ void DRW_draw_select_loop(
/* Get list of enabled engines */
if (use_obedit) {
drw_engines_enable_from_paint_mode(obedit_mode);
drw_engines_enable_from_mode(obedit_mode);
}
else {