public static void validTest(AdjacencyIndex index, int a, int b, int dir, bool expected) { if (index.isValid(index.indexToTile(a), index.indexToTile(b), dir) != expected) { Debug.Log("ERROR: TILE " + a + " -> TILE " + b + " IN DIRECTION " + dir + " EXPECTED: " + expected); } }
public static AdjacencyIndex GenerateIndex(Texture2D adjacencyData, int layersAboveBeach) { AdjacencyIndex index = new AdjacencyIndex(); //Get patterns from sample and build propagator //THIS READS IMAGE FROM TOP LEFT TO BOTTOM RIGHT, LIKE A BOOK //YES IT DOES, UNITY READS IMAGES STRANGELY for (int j = adjacencyData.height - 1; j >= 0; j--) //y { for (int i = 0; i < adjacencyData.width; i++) //x { if ((int)adjacencyData.GetPixel(i, j).r == 1) { continue; } int pixelValue = PixelToId(adjacencyData.GetPixel(i, j)); //Top 0 if (j < adjacencyData.height - 1) { int otherPixel = PixelToId(adjacencyData.GetPixel(i, j + 1)); if ((int)adjacencyData.GetPixel(i, j + 1).r != 1) { for (int layer = 0; layer <= layersAboveBeach; layer++) { index.Add(pixelValue + 33 * layer, otherPixel + 33 * layer, 0); } } } //Right 1 if (i < adjacencyData.width - 1) { int otherPixel = PixelToId(adjacencyData.GetPixel(i + 1, j)); if ((int)adjacencyData.GetPixel(i + 1, j).r != 1) { for (int layer = 0; layer <= layersAboveBeach; layer++) { index.Add(pixelValue + 33 * layer, otherPixel + 33 * layer, 1); } } } //Bottom 2 if (j > 0) { int otherPixel = PixelToId(adjacencyData.GetPixel(i, j - 1)); if ((int)adjacencyData.GetPixel(i, j - 1).r != 1) { for (int layer = 0; layer <= layersAboveBeach; layer++) { index.Add(pixelValue + 33 * layer, otherPixel + 33 * layer, 2); } } } //Left 3 if (i > 0) { int otherPixel = PixelToId(adjacencyData.GetPixel(i - 1, j)); if ((int)adjacencyData.GetPixel(i - 1, j).r != 1) { for (int layer = 0; layer <= layersAboveBeach; layer++) { index.Add(pixelValue + 33 * layer, otherPixel + 33 * layer, 3); } } } } } return(index); }
public static void testIndex(AdjacencyIndex index, int layersAboveBeach) { validTest(index, 0, 0, 0, true); validTest(index, 0, 1, 0, true); validTest(index, 0, 2, 0, true); validTest(index, 0, 3, 0, false); validTest(index, 0, 4, 0, false); validTest(index, 0, 5, 0, false); validTest(index, 0, 6, 0, true); validTest(index, 0, 7, 0, false); validTest(index, 0, 8, 0, false); validTest(index, 0, 9, 0, false); validTest(index, 0, 10, 0, false); validTest(index, 0, 11, 0, false); validTest(index, 0, 12, 0, false); validTest(index, 0, 33, 0, false); validTest(index, 0, 0, 1, true); validTest(index, 0, 1, 1, false); validTest(index, 0, 2, 1, true); validTest(index, 0, 3, 1, true); validTest(index, 0, 4, 1, false); validTest(index, 0, 5, 1, false); validTest(index, 0, 6, 1, false); validTest(index, 0, 7, 1, true); validTest(index, 0, 8, 1, false); validTest(index, 0, 9, 1, false); validTest(index, 0, 10, 1, false); validTest(index, 0, 11, 1, false); validTest(index, 0, 12, 1, false); validTest(index, 0, 33, 1, false); validTest(index, 0, 0, 2, true); validTest(index, 0, 1, 2, false); validTest(index, 0, 2, 2, false); validTest(index, 0, 3, 2, true); validTest(index, 0, 4, 2, true); validTest(index, 0, 5, 2, false); validTest(index, 0, 6, 2, false); validTest(index, 0, 7, 2, false); validTest(index, 0, 8, 2, true); validTest(index, 0, 9, 2, false); validTest(index, 0, 10, 2, false); validTest(index, 0, 11, 2, false); validTest(index, 0, 12, 2, false); validTest(index, 0, 33, 2, false); validTest(index, 0, 0, 3, true); validTest(index, 0, 1, 3, true); validTest(index, 0, 2, 3, false); validTest(index, 0, 3, 3, false); validTest(index, 0, 4, 3, true); validTest(index, 0, 5, 3, true); validTest(index, 0, 6, 3, false); validTest(index, 0, 7, 3, false); validTest(index, 0, 8, 3, false); validTest(index, 0, 9, 3, false); validTest(index, 0, 10, 3, false); validTest(index, 0, 11, 3, false); validTest(index, 0, 12, 3, false); validTest(index, 0, 33, 3, false); validTest(index, 33, 0, 0, false); validTest(index, 33, 1, 0, false); validTest(index, 33, 2, 0, false); validTest(index, 33, 3, 0, false); validTest(index, 33, 4, 0, false); validTest(index, 33, 5, 0, false); validTest(index, 33, 6, 0, false); validTest(index, 33, 7, 0, false); validTest(index, 33, 8, 0, true); validTest(index, 33, 9, 0, false); validTest(index, 33, 10, 0, false); validTest(index, 33, 11, 0, true); validTest(index, 33, 12, 0, true); validTest(index, 33, 33, 0, true); validTest(index, 33, 0, 1, false); validTest(index, 33, 1, 1, false); validTest(index, 33, 2, 1, false); validTest(index, 33, 3, 1, false); validTest(index, 33, 4, 1, false); validTest(index, 33, 5, 1, true); validTest(index, 33, 6, 1, false); validTest(index, 33, 7, 1, false); validTest(index, 33, 8, 1, false); validTest(index, 33, 9, 1, true); validTest(index, 33, 10, 1, false); validTest(index, 33, 11, 1, false); validTest(index, 33, 12, 1, true); validTest(index, 33, 33, 1, true); validTest(index, 33, 0, 2, false); validTest(index, 33, 1, 2, false); validTest(index, 33, 2, 2, false); validTest(index, 33, 3, 2, false); validTest(index, 33, 4, 2, false); validTest(index, 33, 5, 2, false); validTest(index, 33, 6, 2, true); validTest(index, 33, 7, 2, false); validTest(index, 33, 8, 2, false); validTest(index, 33, 9, 2, true); validTest(index, 33, 10, 2, true); validTest(index, 33, 11, 2, false); validTest(index, 33, 12, 2, false); validTest(index, 33, 33, 2, true); validTest(index, 33, 0, 3, false); validTest(index, 33, 1, 3, false); validTest(index, 33, 2, 3, false); validTest(index, 33, 3, 3, false); validTest(index, 33, 4, 3, false); validTest(index, 33, 5, 3, false); validTest(index, 33, 6, 3, false); validTest(index, 33, 7, 3, true); validTest(index, 33, 8, 3, false); validTest(index, 33, 9, 3, false); validTest(index, 33, 10, 3, true); validTest(index, 33, 11, 3, true); validTest(index, 33, 12, 3, false); validTest(index, 33, 33, 3, true); validTest(index, 13, 14, 1, true); if (layersAboveBeach > 0) { validTest(index, 66, 66, 3, true); } }