private void SearchBox(int boxi, Vector3 p, NNConstraint constraint, ref NNInfo nnInfo)
{
BBTree.BBTreeBox bBTreeBox = this.arr[boxi];
if (bBTreeBox.node != null)
{
if (bBTreeBox.node.ContainsPoint((VInt3)p))
{
if (nnInfo.node == null)
{
nnInfo.node = bBTreeBox.node;
}
else if (Mathf.Abs(((Vector3)bBTreeBox.node.position).y - p.y) < Mathf.Abs(((Vector3)nnInfo.node.position).y - p.y))
{
nnInfo.node = bBTreeBox.node;
}
if (constraint.Suitable(bBTreeBox.node))
{
if (nnInfo.constrainedNode == null)
{
nnInfo.constrainedNode = bBTreeBox.node;
}
else if (Mathf.Abs((float)bBTreeBox.node.position.y - p.y) < Mathf.Abs((float)nnInfo.constrainedNode.position.y - p.y))
{
nnInfo.constrainedNode = bBTreeBox.node;
}
}
}
return;
}
if (BBTree.RectContains(this.arr[bBTreeBox.left].rect, p))
{
this.SearchBox(bBTreeBox.left, p, constraint, ref nnInfo);
}
if (BBTree.RectContains(this.arr[bBTreeBox.right].rect, p))
{
this.SearchBox(bBTreeBox.right, p, constraint, ref nnInfo);
}
}