private void ComputeNeighbors(SpatialGraphKDNode node)
        {
            if( node.HasChildren )
            {
                ComputeNeighbors(node.LHC);
                ComputeNeighbors(node.RHC);
                return;
            }

            Vector2 checkN = Vector2.UnitY * _smallestDimensions.Y;
            Vector2 checkS = Vector2.UnitY * -_smallestDimensions.Y;
            Vector2 checkE = Vector2.UnitX * _smallestDimensions.X;
            Vector2 checkW = Vector2.UnitX * -_smallestDimensions.X;

            Vector2 centroid = node.BBox.Centroid();

            List<Vector2> gridPoints;
            int xPoints, yPoints;
            node.GetGridPoints(out gridPoints, out xPoints, out yPoints );

            //Check north neighbors
            for( int i = 0; i < xPoints; i++ )
            {
                AddNeighbor( node, gridPoints[GetColumnMajorIndex(i,0,xPoints)] + checkN );
            }

            //Check south neighbors
            for( int i = 0; i < xPoints; i++ )
            {
                AddNeighbor( node, gridPoints[GetColumnMajorIndex(i,yPoints-1,xPoints)] + checkS );
            }

            //Check east neighbors
            for( int i = 0; i < yPoints; i++ )
            {
                AddNeighbor( node, gridPoints[GetColumnMajorIndex(xPoints-1,i,xPoints)] + checkE );
            }

            //Check west neighbors
            for( int i = 0; i < yPoints; i++ )
            {
                AddNeighbor( node, gridPoints[GetColumnMajorIndex(0,i,xPoints)] + checkW );
            }
        }