Ejemplo n.º 1
0
    private void Update()
    {
        float dy = 0.1f;

        if (viewTiles && Tiles.Count > tileIndex && tileIndex >= 0)
        {
            var tile = Tiles[tileIndex];

            float height(int x, int y)
            {
                return(tile.Height(x, y) + dy);
            }

            for (int x = tile.Corner.x; x < tile.Corner.x + tile.TileSize - 1; x++)
            {
                for (int y = tile.Corner.y; y < tile.Corner.y + tile.TileSize - 1; y++)
                {
                    Drawings.DrawSquare(
                        new Vector3(x, height(x, y), y),
                        new Vector3(x + 1, height(x + 1, y), y),
                        new Vector3(x + 1, height(x + 1, y + 1), y + 1),
                        new Vector3(x, height(x, y + 1), y + 1),
                        Color.green
                        );
                }
            }
        }

        if (viewDiscomfort && Tiles.Count > tileIndex && tileIndex >= 0)
        {
            if (!drawn)
            {
                tilemap.BuildTexture(TextureGenerator.TextureFromMatrix(g, Color.clear, Color.red));
                tilemap.BuildMesh(h);
                drawn = true;
            }
        }

        if (viewBorders && Tiles.Count > tileIndex && tileIndex >= 0)
        {
            var tile = Tiles[tileIndex];

            int i = 0;
            foreach (var border in tile.Borders)
            {
                if (i + 1 > borderColors.Count)
                {
                    borderColors.Add(new Color(
                                         Random.Range(0, 0.5f),
                                         Random.Range(0, 0.5f),
                                         Random.Range(0, 0.5f))
                                     );
                }
                var c = borderColors[i++];
                DrawBorder(border, c);
            }
        }

        if (viewNeighborBorders && Tiles.Count > tileIndex && tileIndex >= 0)
        {
            int i    = 0;
            var tile = Tiles[tileIndex];

            foreach (var border in tile.Borders)
            {
                if (i + 1 > borderColors.Count)
                {
                    borderColors.Add(new Color(Random.value, Random.value, Random.value));
                }
                var c = borderColors[i++];
                DrawBorder(border, c);
                foreach (var kvp in border.PathByNeighbor)
                {
                    Drawings.DrawPath(kvp.Value, tile.Height(kvp.Key.Center), Color.blue);
                }
            }
        }
    }