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); }
new public void Awake() { base.Awake(); falloffMap = Falloff.GenerateFalloffMap(mapWidth, mapHeight); GenerateMap(); ApplyHeightMultiplier(mapSettings.heightMultiplier, mapSettings.heightCurve); }
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); }
public void GenerateMap() { falloffMap = Falloff.GenerateFalloffMap(mapWidth, mapHeight); DrawMap(); colorMap = ColorMapGenerator.GenerateColorMap(heightMap, regions, mapSettings.useFalloff); }