Example #1
0
    public static List <(Direction, Quadtree)> EqualNeighbours(Quadtree quadtree)
    {
        var directions = new[]
        {
            Direction.North,
            Direction.East,
            Direction.South,
            Direction.West,
        };

        var equalNeighbours = new List <(Direction, Quadtree)>();

        foreach (var direction in directions)
        {
            bool overflow;
            var  neighbourLocationCode = quadtree.EqualNeighbourLocationCode(direction.Value, out overflow);

            if (overflow)
            {
                continue;
            }

            var neighbour = quadtree.Root.Find(neighbourLocationCode);

            if (neighbour == null || neighbour.Level != quadtree.Level)
            {
                continue;
            }

            equalNeighbours.Add((direction, neighbour));
        }

        return(equalNeighbours);
    }