diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-09-14 19:31:27 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-09-14 19:32:04 +0300 |
commit | 1f1d5e1dd29a8f561e0ac11b750bc9cd308db031 (patch) | |
tree | 0c9c647665d84c0881c79ab8b69352bfad475fe2 /source/blender/draw | |
parent | b62d140be9319ecb1e8f38228f0f22926d7a8880 (diff) |
Object Mode: Make Flat object selectable in ortho view ...
... when wireframe is enabled
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/engines/basic/basic_engine.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/draw/engines/basic/basic_engine.c b/source/blender/draw/engines/basic/basic_engine.c index 57553d98d5d..d7928a613be 100644 --- a/source/blender/draw/engines/basic/basic_engine.c +++ b/source/blender/draw/engines/basic/basic_engine.c @@ -137,6 +137,24 @@ static void basic_cache_populate(void *vedata, Object *ob) } } + /* Make flat object selectable in ortho view if wireframe is enabled. */ + if ((draw_ctx->v3d->overlay.flag & V3D_OVERLAY_WIREFRAMES) || + (ob->dtx & OB_DRAWWIRE) || + (ob->dt == OB_WIRE)) + { + int flat_axis = 0; + bool is_flat_object_viewed_from_side = (draw_ctx->rv3d->persp == RV3D_ORTHO) && + DRW_object_is_flat(ob, &flat_axis) && + DRW_object_axis_orthogonal_to_view(ob, flat_axis); + + if (is_flat_object_viewed_from_side) { + /* Avoid loosing flat objects when in ortho views (see T56549) */ + struct GPUBatch *geom = DRW_cache_object_wire_outline_get(ob); + DRW_shgroup_call_object_add(stl->g_data->depth_shgrp, geom, ob); + return; + } + } + struct GPUBatch *geom = DRW_cache_object_surface_get(ob); if (geom) { const bool do_cull = (draw_ctx->v3d && (draw_ctx->v3d->flag2 & V3D_BACKFACE_CULLING)); |