public ConvexContactManifoldConstraint()
{
//All of the constraints are always in the solver group. Some of them are just deactivated sometimes.
//This reduces some bookkeeping complications.
penetrationConstraints = new RawList<ContactPenetrationConstraint>(4);
//Order matters in this adding process. Sliding friction computes some information used by the twist friction, and both use penetration impulses.
for (int i = 0; i < 4; i++)
{
var penetrationConstraint = new ContactPenetrationConstraint();
Add(penetrationConstraint);
penetrationConstraintPool.Push(penetrationConstraint);
}
slidingFriction = new SlidingFrictionTwoAxis();
Add(slidingFriction);
twistFriction = new TwistFrictionConstraint();
Add(twistFriction);
}