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!"); }
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)); }