diff options
Diffstat (limited to 'source/blender/draw/engines/select/select_draw_utils.c')
-rw-r--r-- | source/blender/draw/engines/select/select_draw_utils.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/source/blender/draw/engines/select/select_draw_utils.c b/source/blender/draw/engines/select/select_draw_utils.c index 241a05d0feb..745c55405de 100644 --- a/source/blender/draw/engines/select/select_draw_utils.c +++ b/source/blender/draw/engines/select/select_draw_utils.c @@ -40,6 +40,25 @@ /** \name Draw Utilities * \{ */ +short select_id_get_object_select_mode(Scene *scene, Object *ob) +{ + short r_select_mode = 0; + if (ob->mode & (OB_MODE_WEIGHT_PAINT | OB_MODE_VERTEX_PAINT | OB_MODE_TEXTURE_PAINT)) { + Mesh *me_orig = DEG_get_original_object(ob)->data; + if (me_orig->editflag & ME_EDIT_PAINT_FACE_SEL) { + r_select_mode = SCE_SELECT_FACE; + } + if (me_orig->editflag & ME_EDIT_PAINT_VERT_SEL) { + r_select_mode |= SCE_SELECT_VERTEX; + } + } + else { + r_select_mode = scene->toolsettings->selectmode; + } + + return r_select_mode; +} + static bool check_ob_drawface_dot(short select_mode, const View3D *v3d, char dt) { if (select_mode & SCE_SELECT_FACE) { @@ -189,16 +208,6 @@ void select_id_draw_object(void *vedata, r_face_offset); } else { - if (ob->mode & (OB_MODE_WEIGHT_PAINT | OB_MODE_VERTEX_PAINT | OB_MODE_TEXTURE_PAINT)) { - Mesh *me_orig = DEG_get_original_object(ob)->data; - select_mode = 0; - if (me_orig->editflag & ME_EDIT_PAINT_FACE_SEL) { - select_mode = SCE_SELECT_FACE; - } - if (me_orig->editflag & ME_EDIT_PAINT_VERT_SEL) { - select_mode |= SCE_SELECT_VERTEX; - } - } draw_select_id_mesh( stl, ob, select_mode, initial_offset, r_vert_offset, r_edge_offset, r_face_offset); } |