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); }