MCPcopy Create free account
hub / github.com/DanielChappuis/reactphysics3d / removeConvexPairWithIndex

Method removeConvexPairWithIndex

src/engine/OverlappingPairs.cpp:170–200  ·  view source on GitHub ↗

Remove a convex pair at a given index

Source from the content-addressed store, hash-verified

168
169// Remove a convex pair at a given index
170void OverlappingPairs::removeConvexPairWithIndex(uint64 pairIndex, bool removeFromColliders) {
171
172 RP3D_PROFILE("OverlappingPairs::removeConvexPairWithIndex()", mProfiler);
173
174 const uint64 nbConvexPairs = mConvexPairs.size();
175
176 assert(pairIndex < nbConvexPairs);
177
178 assert(mColliderComponents.getOverlappingPairs(mConvexPairs[pairIndex].collider1).find(mConvexPairs[pairIndex].pairID) != mColliderComponents.getOverlappingPairs(mConvexPairs[pairIndex].collider1).end());
179 assert(mColliderComponents.getOverlappingPairs(mConvexPairs[pairIndex].collider2).find(mConvexPairs[pairIndex].pairID) != mColliderComponents.getOverlappingPairs(mConvexPairs[pairIndex].collider2).end());
180
181 if (removeFromColliders) {
182
183 // Remove the involved overlapping pair from the two colliders
184 mColliderComponents.getOverlappingPairs(mConvexPairs[pairIndex].collider1).remove(mConvexPairs[pairIndex].pairID);
185 mColliderComponents.getOverlappingPairs(mConvexPairs[pairIndex].collider2).remove(mConvexPairs[pairIndex].pairID);
186 }
187
188 assert(mMapConvexPairIdToPairIndex[mConvexPairs[pairIndex].pairID] == pairIndex);
189 mMapConvexPairIdToPairIndex.remove(mConvexPairs[pairIndex].pairID);
190
191 // Change the mapping between the pairId and the index in the convex pairs array if we swap the last item with the one to remove
192 if (mConvexPairs.size() > 1 && pairIndex < (nbConvexPairs - 1)) {
193
194 mMapConvexPairIdToPairIndex[mConvexPairs[nbConvexPairs - 1].pairID] = pairIndex;
195 }
196
197 // We want to keep the arrays tightly packed. Therefore, when a pair is removed,
198 // we replace it with the last element of the array.
199 mConvexPairs.removeAtAndReplaceByLast(pairIndex);
200}
201
202// Remove a concave pair at a given index
203void OverlappingPairs::removeConcavePairWithIndex(uint64 pairIndex, bool removeFromColliders) {

Calls 5

sizeMethod · 0.45
findMethod · 0.45
endMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected