public static Color[] GenerateColorMap(float[,] noiseMap, TerrainType[] regions, bool useFalloff)
    {
        int mapWidth  = noiseMap.GetLength(0);
        int mapHeight = noiseMap.GetLength(1);

        float[,] falloffMap = Falloff.GenerateFalloffMap(mapWidth, mapHeight);

        Color[] colorMap = new Color[mapWidth * mapHeight];

        for (int y = 0; y < mapHeight; y++)
        {
            for (int x = 0; x < mapWidth; x++)
            {
                if (useFalloff)
                {
                    noiseMap[x, y] = Mathf.Clamp01(noiseMap[x, y] - falloffMap[x, y]);
                }

                for (int i = 0; i < regions.Length; i++)
                {
                    if (noiseMap[x, y] <= regions[i].height)
                    {
                        colorMap[y * mapWidth + x] = regions[i].color;
                        break;
                    }
                }
            }
        }

        return(colorMap);
    }
Example #2
0
 new public void Awake()
 {
     base.Awake();
     falloffMap = Falloff.GenerateFalloffMap(mapWidth, mapHeight);
     GenerateMap();
     ApplyHeightMultiplier(mapSettings.heightMultiplier, mapSettings.heightCurve);
 }
Example #3
0
    float[,] CreateHeightMapLayer(HeightMapSettings settings, int seed, int mapWidth, int offsetX, int offsetY)
    {
        float widthFactor = (float)mapWidth / (float)maxWidth;

        float[,] noiseMap = Noise.GenerateNoiseMap(
            settings.noiseType,
            mapWidth,
            mapWidth,
            settings.noiseScale * widthFactor,
            offsetX,
            offsetY,
            settings.noiseOctaves,
            settings.persistence,
            settings.lacunarity,
            settings.noiseRedistributionFactor
            );

        float[,] falloffMap = null;
        if (settings.useFalloff)
        {
            falloffMap = Falloff.GenerateFalloffMap(mapWidth, mapWidth);
        }

        bool useHydraulicErosion = hydraulicErosion.settings.useHydraulicErosion;

        if (useHydraulicErosion && settings.mapDepth > 0)
        {
            noiseMap = hydraulicErosion.ErodeTerrain(noiseMap, seed);
        }

        float[,] heightMap = new float[mapWidth, mapWidth];

        // Determine map depth
        for (int z = 0; z < mapWidth; z++)
        {
            for (int x = 0; x < mapWidth; x++)
            {
                if (settings.useFalloff && settings.mapDepth > 0)
                {
                    noiseMap[x, z] = Mathf.Clamp01(noiseMap[x, z] - falloffMap[x, z]);
                }

                if (settings.mapDepth == 0)
                {
                    heightMap[x, z] = 1f;
                }
                else
                {
                    heightMap[x, z] = 2 * (noiseMap[x, z] * settings.mapDepth);
                }
            }
        }

        return(heightMap);
    }
Example #4
0
 public void GenerateMap()
 {
     falloffMap = Falloff.GenerateFalloffMap(mapWidth, mapHeight);
     DrawMap();
     colorMap = ColorMapGenerator.GenerateColorMap(heightMap, regions, mapSettings.useFalloff);
 }