Esempio n. 1
0
        public static Point2 ToGrid(this IReadOnlyArray2D array, int i)
        {
            var y = i / array.Width;
            var x = i - y * array.Width;

            return(new Point2(x, y));
        }
Esempio n. 2
0
        private static List <NodePointer> GetNeighbours(IReadOnlyArray2D <DefinitionNode> nodeArray, int gridX, int gridY, GenerateNodeGridConnections generateNodeGridConnections)
        {
            var neighbours = new List <NodePointer>();

            for (var y = -1; y <= 1; y++)
            {
                for (var x = -1; x <= 1; x++)
                {
                    if (x == 0 && y == 0)
                    {
                        continue;                                       //Skip the center since this is the node we are adding neighbours to.
                    }
                    var checkX = gridX + x;
                    var checkY = gridY + y;

                    if (checkX >= 0 && checkX < nodeArray.Width && checkY >= 0 && checkY < nodeArray.Height)
                    {
                        if (generateNodeGridConnections == GenerateNodeGridConnections.NoDiagonal)
                        {
                            if (x == 1 && y == 1 || x == -1 && y == 1 || x == -1 && y == -1 || x == 1 && y == -1)
                            {
                                continue;
                            }
                        }
                        var p = new NodePointer(nodeArray.Width * checkY + checkX);
                        neighbours.Add(p);
                    }
                }
            }
            return(neighbours);
        }
Esempio n. 3
0
 private int GetIndex(IReadOnlyArray2D readOnlyArray2D, int x, int y)
 {
     if (x >= 0 && y >= 0 && x < readOnlyArray2D.Width && y < readOnlyArray2D.Height)
     {
         return(readOnlyArray2D.ToIndex(x, y));
     }
     return(-1);
 }
Esempio n. 4
0
 public static int ToIndex(this IReadOnlyArray2D array, int x, int y)
 {
     return(x + y * array.Width);
 }
Esempio n. 5
0
 public static int ToIndex(this IReadOnlyArray2D array, Point2 gridCoords)
 {
     return(ToIndex(array, gridCoords.X, gridCoords.Y));
 }