public static IEnumerable <PathInfo <Coord> > AStarSearchStraight(Coord start, Coord goal, Func <Coord, IEnumerable <Coord> > walkableNeighbors)
        {
            //use straightness as tie breaker
            float h(Coord a) => GridCostFunctions.DiagonalDistance(a, goal) + GridCostFunctions.Straightness(start, a, goal) * 0.001f;

            return(Algorithms.AStarSearch(start, goal, walkableNeighbors, CostToNeighbor, h, Coord.Null));
        }
        public static IEnumerable <PathInfo <Coord> > AStarSearch(Coord start, Coord goal, Func <Coord, IEnumerable <Coord> > walkableNeighbors)
        {
            float h(Coord a) => GridCostFunctions.DiagonalDistance(a, goal);

            return(Algorithms.AStarSearch(start, goal, walkableNeighbors, CostToNeighbor, h, Coord.Null));
        }