From cd7abda9f119dff650e466f7405e50b5c0368ed5 Mon Sep 17 00:00:00 2001 From: Ykkrosh Date: Fri, 6 May 2011 22:22:56 +0000 Subject: [PATCH] Handle triple-click selections a bit more efficiently This was SVN commit r9467. --- source/simulation2/helpers/Selection.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/source/simulation2/helpers/Selection.cpp b/source/simulation2/helpers/Selection.cpp index 98d5052fb2..04058943bd 100644 --- a/source/simulation2/helpers/Selection.cpp +++ b/source/simulation2/helpers/Selection.cpp @@ -148,14 +148,7 @@ std::vector EntitySelection::PickSimilarEntities(CSimulation2& simu if (matchRank) { // Exact template name matching - if (cmpTemplateManager->GetCurrentTemplateName(ent).compare(templateName) != 0) - continue; - } - else - { - // Match by selection group name - CmpPtr cmpIdentity(simulation.GetSimContext(), ent); - if (cmpIdentity.null() || cmpIdentity->GetSelectionGroupName().compare(templateName) != 0) + if (cmpTemplateManager->GetCurrentTemplateName(ent) != templateName) continue; } @@ -183,6 +176,15 @@ std::vector EntitySelection::PickSimilarEntities(CSimulation2& simu continue; } + if (!matchRank) + { + // Match by selection group name + // (This is relatively expensive since it involves script calls, so do it after all other tests) + CmpPtr cmpIdentity(simulation.GetSimContext(), ent); + if (cmpIdentity.null() || cmpIdentity->GetSelectionGroupName() != templateName) + continue; + } + hitEnts.push_back(ent); }