diff options
author | Jacques Lucke <jacques@blender.org> | 2020-09-29 13:39:41 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-09-29 13:39:41 +0300 |
commit | e12767a0352a9e113892b4a07c6c8446d3ff361f (patch) | |
tree | 9fe48bb33bda0256e1421f34714bc22668d7b06e /source/blender/draw/engines/overlay/overlay_outline.c | |
parent | 6374644fd11797806ab2e92341e5e7d32e94067b (diff) |
Volumes: support selection and outlines in viewport
Previously, one could only select a volume object in the outliner
or by clicking on the object origin. This patch allows you to click
on the actual volume.
Furthermore, the generated (invisible) mesh that is used for
selection is also used to draw an outline for the volume object now.
Reviewers: brecht
Differential Revision: https://developer.blender.org/D9022
Diffstat (limited to 'source/blender/draw/engines/overlay/overlay_outline.c')
-rw-r--r-- | source/blender/draw/engines/overlay/overlay_outline.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/draw/engines/overlay/overlay_outline.c b/source/blender/draw/engines/overlay/overlay_outline.c index e904066248f..f1467ff9794 100644 --- a/source/blender/draw/engines/overlay/overlay_outline.c +++ b/source/blender/draw/engines/overlay/overlay_outline.c @@ -272,6 +272,17 @@ static void OVERLAY_outline_gpencil(OVERLAY_PrivateData *pd, Object *ob) pd->cfra); } +static void OVERLAY_outline_volume(OVERLAY_PrivateData *pd, Object *ob) +{ + struct GPUBatch *geom = DRW_cache_volume_selection_surface_get(ob); + if (geom == NULL) { + return; + } + + DRWShadingGroup *shgroup = pd->outlines_grp; + DRW_shgroup_call(shgroup, geom, ob); +} + void OVERLAY_outline_cache_populate(OVERLAY_Data *vedata, Object *ob, OVERLAY_DupliData *dupli, @@ -293,6 +304,11 @@ void OVERLAY_outline_cache_populate(OVERLAY_Data *vedata, return; } + if (ob->type == OB_VOLUME) { + OVERLAY_outline_volume(pd, ob); + return; + } + if (ob->type == OB_POINTCLOUD && pd->wireframe_mode) { /* Looks bad in this case. Could be relaxed if we draw a * wireframe of some sort in the future. */ |