Do filtering with copy vector in CollisionPick::filterIntersections

This commit is contained in:
sabrina-shanman 2018-08-20 11:23:22 -07:00
parent 444224a11a
commit 813290aad8

View file

@ -341,16 +341,18 @@ void CollisionPick::filterIntersections(std::vector<ContactTestResult>& intersec
return;
}
std::vector<ContactTestResult> filteredIntersections;
int n = (int)intersections.size();
for (int i = 0; i < n; i++) {
auto& intersection = intersections[i];
const QUuid& id = intersection.foundID;
if (ignoreItems.contains(id) || (isWhitelist && !includeItems.contains(id))) {
intersections[i] = intersections[--n];
intersections.pop_back();
--i;
if (!ignoreItems.contains(id) && (!isWhitelist || includeItems.contains(id))) {
filteredIntersections.push_back(intersection);
}
}
intersections = filteredIntersections;
}
PickResultPointer CollisionPick::getEntityIntersection(const CollisionRegion& pick) {