From 1949144b19d5c33c210204daf7c9816bda62e9a8 Mon Sep 17 00:00:00 2001 From: Enrico van Oosten Date: Wed, 26 Jun 2019 16:38:40 +0200 Subject: [PATCH] !B (CE-20826) (Sandbox) Use highlight instead of aux to draw selection preview Copied from Perforce Change: 1990715 --- Code/Sandbox/EditorQt/Objects/BrushObject.cpp | 23 ---------------------- Code/Sandbox/EditorQt/Objects/BrushObject.h | 1 - .../Plugins/CryDesigner/Objects/DesignerObject.cpp | 23 ---------------------- .../Plugins/CryDesigner/Objects/DesignerObject.h | 1 - .../EditorCommon/LevelEditor/Tools/ObjectMode.cpp | 11 +++++++++++ .../EditorCommon/LevelEditor/Tools/ObjectMode.h | 3 ++- 6 files changed, 13 insertions(+), 49 deletions(-) diff --git a/Code/Sandbox/EditorQt/Objects/BrushObject.cpp b/Code/Sandbox/EditorQt/Objects/BrushObject.cpp index 4a5fcc723..fac15b377 100644 --- a/Code/Sandbox/EditorQt/Objects/BrushObject.cpp +++ b/Code/Sandbox/EditorQt/Objects/BrushObject.cpp @@ -421,29 +421,6 @@ const ColorB& CBrushObject::GetSelectionPreviewHighlightColor() return gViewportSelectionPreferences.geometryHighlightColor; } -void CBrushObject::DrawSelectionPreviewHighlight(SDisplayContext& dc) -{ - CBaseObject::DrawSelectionPreviewHighlight(dc); - - if (dc.display2D) - return; - - ColorB color = GetSelectionPreviewHighlightColor(); - - if (GetParent()) - color.a = (uint8)(gViewportSelectionPreferences.childObjectGeomAlpha * 255); - - SGeometryDebugDrawInfo dd; - dd.tm = GetWorldTM(); - dd.color = color; - dd.lineColor = color; - dd.bDrawInFront = true; - - IStatObj* pStatObj = GetIStatObj(); - if (pStatObj) - pStatObj->DebugDraw(dd); -} - XmlNodeRef CBrushObject::Export(const string& levelPath, XmlNodeRef& xmlNode) { return 0; diff --git a/Code/Sandbox/EditorQt/Objects/BrushObject.h b/Code/Sandbox/EditorQt/Objects/BrushObject.h index 30a196f15..66b6a8eca 100644 --- a/Code/Sandbox/EditorQt/Objects/BrushObject.h +++ b/Code/Sandbox/EditorQt/Objects/BrushObject.h @@ -19,7 +19,6 @@ public: void Done(); void Display(CObjectRenderHelper& objRenderHelper); const ColorB& GetSelectionPreviewHighlightColor() override; - void DrawSelectionPreviewHighlight(SDisplayContext& dc) override; bool CreateGameObject(); void GetLocalBounds(AABB& box); diff --git a/Code/Sandbox/Plugins/CryDesigner/Objects/DesignerObject.cpp b/Code/Sandbox/Plugins/CryDesigner/Objects/DesignerObject.cpp index 3d67c40d6..04cbf792d 100644 --- a/Code/Sandbox/Plugins/CryDesigner/Objects/DesignerObject.cpp +++ b/Code/Sandbox/Plugins/CryDesigner/Objects/DesignerObject.cpp @@ -160,29 +160,6 @@ const ColorB& DesignerObject::GetSelectionPreviewHighlightColor() return gViewportSelectionPreferences.solidBrushGeometryColor; } -void DesignerObject::DrawSelectionPreviewHighlight(SDisplayContext& dc) -{ - CBaseObject::DrawSelectionPreviewHighlight(dc); - - if (dc.display2D) - return; - - ColorB color = GetSelectionPreviewHighlightColor(); - - if (GetParent()) - color.a = (uint8)(gViewportSelectionPreferences.childObjectGeomAlpha * 255); - - SGeometryDebugDrawInfo dd; - dd.tm = GetWorldTM(); - dd.color = color; - dd.lineColor = color; - dd.bDrawInFront = true; - - IStatObj* pStatObj = GetIStatObj(); - if (pStatObj) - pStatObj->DebugDraw(dd); -} - void DesignerObject::DrawOpenPolygons(SDisplayContext& dc) { dc.PushMatrix(GetWorldTM()); diff --git a/Code/Sandbox/Plugins/CryDesigner/Objects/DesignerObject.h b/Code/Sandbox/Plugins/CryDesigner/Objects/DesignerObject.h index 93f31eaa3..e05823fcb 100644 --- a/Code/Sandbox/Plugins/CryDesigner/Objects/DesignerObject.h +++ b/Code/Sandbox/Plugins/CryDesigner/Objects/DesignerObject.h @@ -46,7 +46,6 @@ public: bool Init(::CBaseObject* prev, const string& file) override; void Display(CObjectRenderHelper& objRenderHelper) override; const ColorB& GetSelectionPreviewHighlightColor() override; - void DrawSelectionPreviewHighlight(SDisplayContext& dc) override; void GetBoundBox(AABB& box) override; void GetLocalBounds(AABB& box) override; diff --git a/Code/Sandbox/Plugins/EditorCommon/LevelEditor/Tools/ObjectMode.cpp b/Code/Sandbox/Plugins/EditorCommon/LevelEditor/Tools/ObjectMode.cpp index 1589e27d3..d8a2e6d64 100644 --- a/Code/Sandbox/Plugins/EditorCommon/LevelEditor/Tools/ObjectMode.cpp +++ b/Code/Sandbox/Plugins/EditorCommon/LevelEditor/Tools/ObjectMode.cpp @@ -268,6 +268,12 @@ void CObjectMode::DisplaySelectionPreview(SDisplayContext& dc) CRect rc = pViewport->GetSelectionRectangle(); + for (CBaseObjectPtr& pObj : m_highlightedObjects) + { + pObj->SetHighlight(false); + } + m_highlightedObjects.clear(); + if (GetCommandMode() == SelectMode) { if (rc.Width() > m_areaRectMinSizeWidth && rc.Height() > m_areaRectMinSizeHeight) @@ -294,6 +300,11 @@ void CObjectMode::DisplaySelectionPreview(SDisplayContext& dc) if (pObject->GetType() & ~gViewportSelectionPreferences.objectSelectMask) continue; + if (!pObject->IsHighlighted()) + { + pObject->SetHighlight(true); + m_highlightedObjects.push_back(pObject); + } pObject->DrawSelectionPreviewHighlight(dc); } } diff --git a/Code/Sandbox/Plugins/EditorCommon/LevelEditor/Tools/ObjectMode.h b/Code/Sandbox/Plugins/EditorCommon/LevelEditor/Tools/ObjectMode.h index 9c99c29ad..932658853 100644 --- a/Code/Sandbox/Plugins/EditorCommon/LevelEditor/Tools/ObjectMode.h +++ b/Code/Sandbox/Plugins/EditorCommon/LevelEditor/Tools/ObjectMode.h @@ -173,7 +173,8 @@ private: CryGUID m_MouseOverObject; bool m_openContext; // used to keep highlight from disappearing when we use right click menu - bool m_suspendHighlightChange; + bool m_suspendHighlightChange; + std::vector<_smart_ptr> m_highlightedObjects; typedef std::vector TGuidContainer; std::unordered_set m_subTools; -- 2.11.4.GIT