void Awake() { Debug.Assert(size > 1); Debug.Assert((size - 1) % 2 == 0); // make sure it's odd CenterIndex = ChunkAndBlockSearch.FindChunkIndex(Player.position); Chunks = new Chunk[size, size]; Center = new TwoDIndex((size - 1) / 2, (size - 1) / 2); FillArray(); }
public static void OutPutPathOfRobotInMatrix(int[,]matrix, TwoDIndex startIndex, List<TwoDIndex> pathSteps, TwoDIndex endIndex) { if (pathSteps == null) { pathSteps = new List<TwoDIndex> (); } pathSteps.Add(startIndex); if (startIndex.Equals(endIndex)) { Output (pathSteps); } if (startIndex.Row < endIndex.Row && matrix[startIndex.Row+1, startIndex.Column]!=0) { var newSteps = new List<TwoDIndex>(pathSteps); var newIndex = new TwoDIndex (startIndex.Row + 1, startIndex.Column); OutPutPathOfRobotInMatrix (matrix, newIndex, newSteps, endIndex); } if (startIndex.Column < endIndex.Column && matrix[startIndex.Row, startIndex.Column+1]!=0) { var newSteps = new List<TwoDIndex>(pathSteps); var newIndex = new TwoDIndex (startIndex.Row, startIndex.Column + 1); OutPutPathOfRobotInMatrix (matrix, newIndex, newSteps, endIndex); } }