From e08f1c3cac85000150097ed6390644cbd6d05262 Mon Sep 17 00:00:00 2001 From: codereader Date: Sat, 29 May 2021 10:55:07 +0200 Subject: [PATCH] #5623: Rendering of selected merge action nodes --- include/iglrender.h | 4 ++-- radiant/xyview/XYRenderer.h | 6 ++++++ radiantcore/map/MergeActionNode.h | 2 +- radiantcore/rendersystem/backend/OpenGLShader.cpp | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/include/iglrender.h b/include/iglrender.h index c754a06613..8f965f86e5 100644 --- a/include/iglrender.h +++ b/include/iglrender.h @@ -36,13 +36,13 @@ class OpenGLState SORT_INTERACTION = 2, // used by the DBS pass SORT_FULLBRIGHT = 1025, // used by non-translucent editor passes SORT_TRANSLUCENT = 1026, // used by blend-type editor passes - SORT_HIGHLIGHT = 1027, // used by the (red) selection system overlay SORT_OVERLAY_FIRST = 1028, // used by decals SORT_OVERLAY_SECOND = 1029, // used by merge actions SORT_OVERLAY_THIRD = 1030, // used by merge actions SORT_OVERLAY_ONE_BEFORE_LAST = 2046, // used by merge actions SORT_OVERLAY_LAST = 2047, - SORT_POINT_FIRST = 2048, // used by POINT renderers + SORT_HIGHLIGHT = 2048, // used by the (red) selection system overlay + SORT_POINT_FIRST = 2049, // used by POINT renderers SORT_POINT_LAST = 3071, SORT_GUI0 = 3072, // used by selection system controls, pivots (visible) SORT_GUI1 = 3073, // used by selection system controls, pivots (obscured) diff --git a/radiant/xyview/XYRenderer.h b/radiant/xyview/XYRenderer.h index 94d0fbb5f6..1aad95d0d1 100644 --- a/radiant/xyview/XYRenderer.h +++ b/radiant/xyview/XYRenderer.h @@ -79,6 +79,12 @@ class XYRenderer : _shaders.nonMergeActionNodeShader->addRenderable(renderable, localToWorld, nullptr, entity); } + // Elements can still be selected in merge mode + if ((_flags & Highlight::Flags::Primitives) != 0) + { + _shaders.selectedShader->addRenderable(renderable, localToWorld, nullptr, entity); + } + return; } diff --git a/radiantcore/map/MergeActionNode.h b/radiantcore/map/MergeActionNode.h index 48564b4d53..f60cb8af5a 100644 --- a/radiantcore/map/MergeActionNode.h +++ b/radiantcore/map/MergeActionNode.h @@ -106,7 +106,7 @@ class MergeActionNode final : std::size_t getHighlightFlags() override { - return Highlight::NoHighlight; + return isSelected() ? Highlight::Selected : Highlight::NoHighlight; } void testSelect(Selector& selector, SelectionTest& test) override diff --git a/radiantcore/rendersystem/backend/OpenGLShader.cpp b/radiantcore/rendersystem/backend/OpenGLShader.cpp index fda17f092f..6eb4b20233 100644 --- a/radiantcore/rendersystem/backend/OpenGLShader.cpp +++ b/radiantcore/rendersystem/backend/OpenGLShader.cpp @@ -853,7 +853,7 @@ void OpenGLShader::construct() static_cast(colorSelBrushes[2]), static_cast(1)); state.setRenderFlag(RENDER_LINESTIPPLE); - state.setSortPosition(OpenGLState::SORT_OVERLAY_FIRST); + state.setSortPosition(OpenGLState::SORT_HIGHLIGHT); state.m_linewidth = 2; state.m_linestipple_factor = 3; } @@ -865,7 +865,7 @@ void OpenGLShader::construct() static_cast(colorSelBrushes[2]), static_cast(1)); state.setRenderFlag(RENDER_LINESTIPPLE); - state.setSortPosition(OpenGLState::SORT_OVERLAY_FIRST); + state.setSortPosition(OpenGLState::SORT_HIGHLIGHT); state.m_linewidth = 2; state.m_linestipple_factor = 3; }