///<summary>
/// Removes a contact from the constraint.
///</summary>
///<param name="contact">Contact to remove.</param>
public override void RemoveContact(Contact contact)
{
ContactPenetrationConstraint penetrationConstraint = null;
for (int i = 0; i < penetrationConstraints.count; ++i)
{
if ((penetrationConstraint = penetrationConstraints.Elements[i]).contact == contact)
{
penetrationConstraint.CleanUp();
penetrationConstraints.RemoveAt(i);
penetrationConstraintPool.Push(penetrationConstraint);
break;
}
}
for (int i = frictionConstraints.count - 1; i >= 0; i--)
{
ContactFrictionConstraint frictionConstraint = frictionConstraints[i];
if (frictionConstraint.PenetrationConstraint == penetrationConstraint)
{
frictionConstraint.CleanUp();
frictionConstraints.RemoveAt(i);
frictionConstraintPool.Push(frictionConstraint);
break;
}
}
}