Pathfinding.BBTree.NodeIntersectsCircle C# (CSharp) Method

NodeIntersectsCircle() public method

public NodeIntersectsCircle ( Pathfinding.MeshNode node, Vector3 p, float radius ) : bool
node Pathfinding.MeshNode
p Vector3
radius float
return bool
		public bool NodeIntersectsCircle (MeshNode node, Vector3 p, float radius) {
			
			if (float.IsPositiveInfinity(radius)) return true;
			
			/*if (node.ContainsPoint ((Int3)p)) {
				return true;
			}*/
			return (p - node.ClosestPointOnNode (p)).sqrMagnitude < radius*radius;
			
			/*Int3[] vertices = graph.vertices;
			Vector3 p1 = (Vector3)vertices[node[0]], p2 = (Vector3)vertices[node[1]], p3 = (Vector3)vertices[node[2]];
			
			float r2 = radius*radius;
			p1.y = p.y;
			p2.y = p.y;
			p3.y = p.y;
			
			return 	Mathfx.DistancePointSegmentStrict (p1,p2,p) < r2 ||
					Mathfx.DistancePointSegmentStrict (p2,p3,p) < r2 ||
					Mathfx.DistancePointSegmentStrict (p3,p1,p) < r2;*/
			
		}
		

Usage Example

Ejemplo n.º 1
0
 private void SearchBoxClosest(int boxi, Vector3 p, ref float closestDist, NNConstraint constraint, ref NNInfoInternal nnInfo)
 {
     BBTree.BBTreeBox bbtreeBox = this.arr[boxi];
     if (bbtreeBox.node != null)
     {
         if (BBTree.NodeIntersectsCircle(bbtreeBox.node, p, closestDist))
         {
             Vector3 vector = bbtreeBox.node.ClosestPointOnNode(p);
             if (constraint == null || constraint.Suitable(bbtreeBox.node))
             {
                 float sqrMagnitude = (vector - p).sqrMagnitude;
                 if (nnInfo.constrainedNode == null || sqrMagnitude < closestDist * closestDist)
                 {
                     nnInfo.constrainedNode      = bbtreeBox.node;
                     nnInfo.constClampedPosition = vector;
                     closestDist = (float)Math.Sqrt((double)sqrMagnitude);
                 }
             }
         }
     }
     else
     {
         if (BBTree.RectIntersectsCircle(this.arr[bbtreeBox.left].rect, p, closestDist))
         {
             this.SearchBoxClosest(bbtreeBox.left, p, ref closestDist, constraint, ref nnInfo);
         }
         if (BBTree.RectIntersectsCircle(this.arr[bbtreeBox.right].rect, p, closestDist))
         {
             this.SearchBoxClosest(bbtreeBox.right, p, ref closestDist, constraint, ref nnInfo);
         }
     }
 }
All Usage Examples Of Pathfinding.BBTree::NodeIntersectsCircle