protected virtual void UpdateContacts(float dt)
{
UpdateContainedPairs();
//Eliminate old pairs.
foreach (CollidablePair pair in subPairs.Keys)
{
if (!containedPairs.Contains(pair))
pairsToRemove.Add(pair);
}
for (int i = 0; i < pairsToRemove.Count; i++)
{
CollidablePairHandler toReturn = subPairs[pairsToRemove.Elements[i]];
subPairs.Remove(pairsToRemove.Elements[i]);
toReturn.CleanUp();
toReturn.Factory.GiveBack(toReturn);
}
containedPairs.Clear();
pairsToRemove.Clear();
foreach (CollidablePairHandler pair in subPairs.Values)
{
if (pair.BroadPhaseOverlap.collisionRule < CollisionRule.NoNarrowPhaseUpdate) //Don't test if the collision rules say don't.
pair.UpdateCollision(dt);
}
}