public override void Update(float dt)
{
ContactData contactData;
bool colliding = false;
if (SphereTester.AreSpheresColliding(sphereA.Shape, sphereB.Shape, ref sphereA.worldTransform.Position, ref sphereB.worldTransform.Position, out contactData))
{
if (!previouslyColliding && contactData.PenetrationDepth >= 0) //Don't use the contact if it's an initial contact and the depth is negative. Why not? Bounciness and InitialCollisionDetected.
{
Add(ref contactData);
colliding = true;
}
else if (previouslyColliding)
{
contact.Normal = contactData.Normal;
contact.PenetrationDepth = contactData.PenetrationDepth;
contact.Position = contactData.Position;
colliding = true;
}
}
else
{
if (previouslyColliding)
Remove(0);
}
previouslyColliding = colliding;
}