static bool RectIntersectsCircle (Rect r, Vector3 p, float radius) {
if (float.IsPositiveInfinity(radius)) return true;
if (RectContains(r, p)) {
return true;
}
return XIntersectsCircle(r.xMin, r.xMax, r.yMin, p, radius) ||
XIntersectsCircle(r.xMin, r.xMax, r.yMax, p, radius) ||
ZIntersectsCircle(r.yMin, r.yMax, r.xMin, p, radius) ||
ZIntersectsCircle(r.yMin, r.yMax, r.xMax, p, radius);
}