コード例 #1
0
        public IEnumerable GetNeighbours(Node node, Pathfinding.DistanceType distanceType)
        {
            int x = 0, y = 0;

            switch (distanceType)
            {
            case Pathfinding.DistanceType.Manhattan:
                y = 0;
                for (x = -1; x <= 1; ++x)
                {
                    var neighbor = AddNodeNeighbour(x, y, node);
                    if (neighbor != null)
                    {
                        yield return(neighbor);
                    }
                }

                x = 0;
                for (y = -1; y <= 1; ++y)
                {
                    var neighbor = AddNodeNeighbour(x, y, node);
                    if (neighbor != null)
                    {
                        yield return(neighbor);
                    }
                }

                break;

            case Pathfinding.DistanceType.Euclidean:
                for (x = -1; x <= 1; x++)
                {
                    for (y = -1; y <= 1; y++)
                    {
                        var neighbor = AddNodeNeighbour(x, y, node);
                        if (neighbor != null)
                        {
                            yield return(neighbor);
                        }
                    }
                }

                break;
            }
        }
コード例 #2
0
ファイル: DungeonGrid.cs プロジェクト: maqqr/7drl2019
        public System.Collections.IEnumerable GetNeighbours(Node node, Pathfinding.DistanceType distanceType, System.Func <Vector2Int, Vector2Int, bool> isWalkableFrom)
        {
            int x = 0, y = 0;

            switch (distanceType)
            {
            case Pathfinding.DistanceType.Manhattan:
                y = 0;
                for (x = -1; x <= 1; ++x)
                {
                    var neighbor = AddNodeNeighbour(x, y, node, isWalkableFrom);
                    if (neighbor != null)
                    {
                        yield return(neighbor);
                    }
                }

                x = 0;
                for (y = -1; y <= 1; ++y)
                {
                    var neighbor = AddNodeNeighbour(x, y, node, isWalkableFrom);
                    if (neighbor != null)
                    {
                        yield return(neighbor);
                    }
                }
                break;

            case Pathfinding.DistanceType.Euclidean:
                for (x = -1; x <= 1; x++)
                {
                    for (y = -1; y <= 1; y++)
                    {
                        var neighbor = AddNodeNeighbour(x, y, node, isWalkableFrom);
                        if (neighbor != null)
                        {
                            yield return(neighbor);
                        }
                    }
                }
                break;
            }
        }