示例#1
0
    new void Awake()
    {
        SetResolution(1, 1);
        //Heatmap = (i, j) => i + j;

        Heatmap = (i, j) =>
        {
            int id = (Emitter as World).GetTileAt(new World.Coord(i, j)).Room.Id;
            return(id == -1 ? 244 : 200 * id);
        };

        palette = File.ReadAllLines(StreamingAssets.ReadFile("Colormaps", "rainbow_bgyrm_35-85_c71_n256.csv")).Select(
            line => {
            string[] lineS = line.Split(',');
            return(new Color(float.Parse(lineS[0]), float.Parse(lineS[1]), float.Parse(lineS[2])));
        }
            ).ToArray();

        base.Awake();

        name = "Overlay";

        int paletteSize = palette.Length;

        // Palette texture generation
        paletteTexture = new Texture2D(tileSizeX, tileSizeY * paletteSize);

        Color[] colors = paletteTexture.GetPixels();
        for (int s = 0; s < paletteSize; ++s)
        {
            Color baseColor = palette[s];
            for (int i = 0; i < tileSizeX; ++i)
            {
                for (int j = 0; j < tileSizeY; ++j)
                {
                    colors[(s * tileSizeX + i) * tileSizeY + j] = baseColor;
                    //+ 3 *
                    //new Color(UnityEngine.Random.Range(0.0f, .3f),
                    //          UnityEngine.Random.Range(0.0f, .3f),
                    //          UnityEngine.Random.Range(0.0f, .3f)
                    //);
                }
            }
        }
        paletteTexture.SetPixels(colors);
        paletteTexture.Apply(false);
    }
示例#2
0
    public void GeneratePalette(string name)
    {
        palette = File.ReadAllLines(StreamingAssets.ReadFile("Colormaps", name)).Select(
            line => {
            string[] lineS = line.Split(',');
            return(new Color(float.Parse(lineS[0]), float.Parse(lineS[1]), float.Parse(lineS[2])));
        }
            ).ToArray();

        int paletteSize = palette.Length;

        paletteTexture = new Texture2D(tileSizeX, tileSizeY * (paletteSize + 1));

        Color[] colors = paletteTexture.GetPixels();
        for (int s = 0; s < paletteSize; ++s)
        {
            Color baseColor = palette[s];
            for (int i = 0; i < tileSizeX; ++i)
            {
                for (int j = 0; j < tileSizeY; ++j)
                {
                    colors[(s * tileSizeX + i) * tileSizeY + j] = baseColor;
                }
            }
        }
        Color transparent = new Color(0f, 0f, 0f, 1.0f);

        for (int i = 0; i < tileSizeX; ++i)
        {
            for (int j = 0; j < tileSizeY; ++j)
            {
                colors[(paletteSize * tileSizeX + i) * tileSizeY + j] = transparent;
            }
        }
        paletteTexture.SetPixels(colors);
        paletteTexture.Apply(false);
    }