From 781c6365cdae5167698bc75a9069fc535ac71dcc Mon Sep 17 00:00:00 2001 From: turanszkij Date: Wed, 27 Dec 2017 20:52:31 +0100 Subject: [PATCH] editor update --- Editor/Editor.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Editor/Editor.cpp b/Editor/Editor.cpp index 82d29a6ba..0c0655a97 100644 --- a/Editor/Editor.cpp +++ b/Editor/Editor.cpp @@ -203,7 +203,7 @@ void ClearSelected() selected.clear(); savedParents.clear(); } -void AddSelected(wiRenderer::Picked* picked) +void AddSelected(wiRenderer::Picked* picked, bool deselectIfAlreadySelected = false) { list::iterator it = selected.begin(); for (; it != selected.end(); ++it) @@ -213,11 +213,28 @@ void AddSelected(wiRenderer::Picked* picked) break; } } + if (it == selected.end()) { selected.push_back(picked); savedParents.insert(pair(picked->transform, picked->transform->parent)); } + else if (deselectIfAlreadySelected) + { + { + picked->transform->detach(); + std::map::iterator it = savedParents.find(picked->transform); + if (it != savedParents.end()) + { + picked->transform->attachTo(it->second); + } + } + + SAFE_DELETE(*it); + selected.erase(it); + savedParents.erase(picked->transform); + SAFE_DELETE(picked); + } } enum EDITORSTENCILREF @@ -1048,7 +1065,7 @@ void EditorComponent::Update(float dt) wiRenderer::Picked* picked = new wiRenderer::Picked(hovered); if (!selected.empty() && wiInputManager::GetInstance()->down(VK_LSHIFT)) { - AddSelected(picked); + AddSelected(picked, true); } else {