Pathfinding.BBTree.RectIntersectsCircle C# (CSharp) Method

RectIntersectsCircle() public method

public RectIntersectsCircle ( Rect r, Vector3 p, float radius ) : bool
r Rect
p Vector3
radius float
return bool
		public bool RectIntersectsCircle (Rect r, Vector3 p, float radius) {
			
			if (float.IsPositiveInfinity(radius)) return true;
			
			Vector3 po = p;
			p.x = System.Math.Max (p.x, r.xMin);
			p.x = System.Math.Min (p.x, r.xMax);
			p.z = System.Math.Max (p.z, r.yMin);
			p.z = System.Math.Min (p.z, r.yMax);
			
			return (po-p).sqrMagnitude < radius*radius;
		}
		

Usage Example

Ejemplo n.º 1
0
 private void SearchBoxClosestXZ(int boxi, Vector3 p, ref float closestDist, NNConstraint constraint, ref NNInfo nnInfo)
 {
     BBTree.BBTreeBox bBTreeBox = this.arr[boxi];
     if (bBTreeBox.node != null)
     {
         Vector3 constClampedPosition = bBTreeBox.node.ClosestPointOnNodeXZ(p);
         if (constraint == null || constraint.Suitable(bBTreeBox.node))
         {
             float num = (constClampedPosition.x - p.x) * (constClampedPosition.x - p.x) + (constClampedPosition.z - p.z) * (constClampedPosition.z - p.z);
             if (nnInfo.constrainedNode == null)
             {
                 nnInfo.constrainedNode      = bBTreeBox.node;
                 nnInfo.constClampedPosition = constClampedPosition;
                 closestDist = (float)Math.Sqrt((double)num);
             }
             else if (num < closestDist * closestDist)
             {
                 nnInfo.constrainedNode      = bBTreeBox.node;
                 nnInfo.constClampedPosition = constClampedPosition;
                 closestDist = (float)Math.Sqrt((double)num);
             }
         }
     }
     else
     {
         if (BBTree.RectIntersectsCircle(this.arr[bBTreeBox.left].rect, p, closestDist))
         {
             this.SearchBoxClosestXZ(bBTreeBox.left, p, ref closestDist, constraint, ref nnInfo);
         }
         if (BBTree.RectIntersectsCircle(this.arr[bBTreeBox.right].rect, p, closestDist))
         {
             this.SearchBoxClosestXZ(bBTreeBox.right, p, ref closestDist, constraint, ref nnInfo);
         }
     }
 }
All Usage Examples Of Pathfinding.BBTree::RectIntersectsCircle