From 1f1d5e1dd29a8f561e0ac11b750bc9cd308db031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 14 Sep 2018 18:31:27 +0200 Subject: Object Mode: Make Flat object selectable in ortho view ... ... when wireframe is enabled --- source/blender/draw/engines/basic/basic_engine.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'source/blender/draw/engines/basic') 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)); -- cgit v1.2.3