public float GetClosestPoint(Vector2 point, out Vector2 closest, out Vector2 normal, out int pointA, out int pointB, out float edgeD)
{
closest = Vector2.Zero;
pointA = -1;
pointB = -1;
edgeD = 0f;
normal = Vector2.Zero;
float closestD = 1000.0f;
for (int i = 0; i < count; i++)
{
Vector2 tempHit;
Vector2 tempNorm;
float tempEdgeD;
float dist = GetClosestPointOnEdge(point, i, out tempHit, out tempNorm, out tempEdgeD);
if (dist < closestD)
{
closestD = dist;
pointA = i;
if (i < (count - 1))
pointB = i + 1;
else
pointB = 0;
edgeD = tempEdgeD;
normal = tempNorm;
closest = tempHit;
}
}
// return.
return closestD;
}