diff options
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_draw.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index d3a0ee27256..3b355177852 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -2251,32 +2251,46 @@ CustomDataMask ED_view3d_datamask(Scene *scene, View3D *v3d) return mask; } + +CustomDataMask ED_view3d_object_datamask(Scene *scene) +{ + Object *ob= scene->basact ? scene->basact->object : NULL; + CustomDataMask mask= 0; + + if (ob) { + /* check if we need tfaces & mcols due to face select or texture paint */ + if (paint_facesel_test(ob) || (ob->mode & OB_MODE_TEXTURE_PAINT)) { + mask |= CD_MASK_MTFACE | CD_MASK_MCOL; + } + + /* check if we need mcols due to vertex paint or weightpaint */ + if (ob->mode & OB_MODE_VERTEX_PAINT) { + mask |= CD_MASK_MCOL; + } + + if (ob->mode & OB_MODE_WEIGHT_PAINT) { + mask |= CD_MASK_WEIGHT_MCOL; + } + } + + return mask; +} + /* goes over all modes and view3d settings */ -CustomDataMask ED_viewedit_datamask(bScreen *screen) +CustomDataMask ED_view3d_screen_datamask(bScreen *screen) { Scene *scene= screen->scene; - Object *ob= scene->basact ? scene->basact->object : NULL; CustomDataMask mask = CD_MASK_BAREMESH; ScrArea *sa; - /* check if we need tfaces & mcols due to face select or texture paint */ - if(paint_facesel_test(ob) || (ob && ob->mode & OB_MODE_TEXTURE_PAINT)) - mask |= CD_MASK_MTFACE | CD_MASK_MCOL; - /* check if we need tfaces & mcols due to view mode */ for(sa = screen->areabase.first; sa; sa = sa->next) { if(sa->spacetype == SPACE_VIEW3D) { mask |= ED_view3d_datamask(scene, (View3D *)sa->spacedata.first); } } - - /* check if we need mcols due to vertex paint or weightpaint */ - if(ob) { - if(ob->mode & OB_MODE_VERTEX_PAINT) - mask |= CD_MASK_MCOL; - if(ob->mode & OB_MODE_WEIGHT_PAINT) - mask |= CD_MASK_WEIGHT_MCOL; - } + + mask |= ED_view3d_object_datamask(scene); return mask; } |