Пример #1
0
    public void AreaDisplayProvidesCorrectColorForPointIsInsideArea()
    {
        List <DisplayNode> nodeList = new List <DisplayNode> ();

        nodeList.Add(new DisplayNode(0, 0));
        nodeList.Add(new DisplayNode(0, 2));
        nodeList.Add(new DisplayNode(2, 2));
        nodeList.Add(new DisplayNode(2, 0));

        display.AddArea(Color.blue, nodeList);

        Assert.True(display.GetPointColor(1, 1) == Color.blue, "Wrong color found at 1,1!");
    }
Пример #2
0
    public static ColorMap ColorMapForHeightAndAreas(MapData mapData, int lod = 0)
    {
        lod = lod == 0 ? 1 : lod * 2;
        int          width  = mapData.GetWidth();
        int          height = mapData.GetHeight();
        MapDataSlice slice  = mapData.AsSlice();

        Color[] colorArray = new Color[width * height];
        if (areaDisplay == null)
        {
            areaDisplay = GameObject.FindObjectOfType <AreaDisplay>();
        }

        for (int y = 0; y < height; y += lod)
        {
            for (int x = 0; x < width; x += lod)
            {
                float currentHeight = mapData.GetSquished(x, y);
                float scaledPosX    = (slice.GetX() + x);
                float scaledPosY    = (slice.GetY() + y);
                Color areaColor     = areaDisplay.GetPointColor(scaledPosX, scaledPosY);
                Color regionColor   = GetRegionColour(currentHeight);

                if (areaColor != Color.clear)
                {
                    regionColor = Color.Lerp(areaColor, regionColor, colorLerpValue);
                }

                for (int actualY = y; actualY < y + lod && actualY < height; actualY++)
                {
                    for (int actualX = x; actualX < x + lod && actualX < width; actualX++)
                    {
                        colorArray[actualY * width + actualX] = regionColor;
                    }
                }
            }
        }
        return(new ColorMap(colorArray, width, height));
    }