Handle triple-click selections a bit more efficiently

This was SVN commit r9467.
This commit is contained in:
Ykkrosh 2011-05-06 22:22:56 +00:00
parent b2bf04c5ae
commit cd7abda9f1

View File

@ -148,14 +148,7 @@ std::vector<entity_id_t> 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<ICmpIdentity> cmpIdentity(simulation.GetSimContext(), ent);
if (cmpIdentity.null() || cmpIdentity->GetSelectionGroupName().compare(templateName) != 0)
if (cmpTemplateManager->GetCurrentTemplateName(ent) != templateName)
continue;
}
@ -183,6 +176,15 @@ std::vector<entity_id_t> 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<ICmpIdentity> cmpIdentity(simulation.GetSimContext(), ent);
if (cmpIdentity.null() || cmpIdentity->GetSelectionGroupName() != templateName)
continue;
}
hitEnts.push_back(ent);
}