|
@@ -6,8 +6,10 @@ public class MapGenerator : MonoBehaviour
|
|
|
public enum DrawMode { NoiseMap, ColourMap, Mesh};
|
|
public enum DrawMode { NoiseMap, ColourMap, Mesh};
|
|
|
public DrawMode drawMode;
|
|
public DrawMode drawMode;
|
|
|
|
|
|
|
|
- public int mapWidth;
|
|
|
|
|
- public int mapHeight;
|
|
|
|
|
|
|
+ const int mapChunkSize = 241;
|
|
|
|
|
+
|
|
|
|
|
+ [Range(0,6)]
|
|
|
|
|
+ public int levelOfDetail;
|
|
|
public float noiseScale;
|
|
public float noiseScale;
|
|
|
|
|
|
|
|
public int octaves;
|
|
public int octaves;
|
|
@@ -19,26 +21,29 @@ public class MapGenerator : MonoBehaviour
|
|
|
public int seed;
|
|
public int seed;
|
|
|
public Vector2 offset;
|
|
public Vector2 offset;
|
|
|
|
|
|
|
|
|
|
+ public float MeshHeightMultiplier;
|
|
|
|
|
+ public AnimationCurve meshHeightCurve;
|
|
|
|
|
+
|
|
|
public bool autoUpdate;
|
|
public bool autoUpdate;
|
|
|
|
|
|
|
|
public TerrainType[] regions;
|
|
public TerrainType[] regions;
|
|
|
|
|
|
|
|
public void GenerateMap()
|
|
public void GenerateMap()
|
|
|
{
|
|
{
|
|
|
- float[,] noiseMap = Noise.GenerateNoiseMap(mapWidth, mapHeight, seed, noiseScale, octaves, persistance, lacunarity, offset);
|
|
|
|
|
|
|
+ float[,] noiseMap = Noise.GenerateNoiseMap(mapChunkSize, mapChunkSize, seed, noiseScale, octaves, persistance, lacunarity, offset);
|
|
|
|
|
|
|
|
- Color[] colourMap = new Color[mapWidth * mapHeight];
|
|
|
|
|
|
|
+ Color[] colourMap = new Color[mapChunkSize * mapChunkSize];
|
|
|
|
|
|
|
|
- for(int y=0; y<mapHeight; y++)
|
|
|
|
|
|
|
+ for(int y=0; y<mapChunkSize; y++)
|
|
|
{
|
|
{
|
|
|
- for (int x=0; x<mapWidth; x++)
|
|
|
|
|
|
|
+ for (int x=0; x<mapChunkSize; x++)
|
|
|
{
|
|
{
|
|
|
float currentHeight = noiseMap[x, y];
|
|
float currentHeight = noiseMap[x, y];
|
|
|
for (int i = 0; i < regions.Length; i++)
|
|
for (int i = 0; i < regions.Length; i++)
|
|
|
{
|
|
{
|
|
|
if(currentHeight <= regions[i].height)
|
|
if(currentHeight <= regions[i].height)
|
|
|
{
|
|
{
|
|
|
- colourMap[y*mapWidth + x] = regions[i].colour;
|
|
|
|
|
|
|
+ colourMap[y*mapChunkSize + x] = regions[i].colour;
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -51,24 +56,15 @@ public class MapGenerator : MonoBehaviour
|
|
|
display.DrawTexture(TextureGenerator.TextureFromHeightMap(noiseMap));
|
|
display.DrawTexture(TextureGenerator.TextureFromHeightMap(noiseMap));
|
|
|
} else if (drawMode == DrawMode.ColourMap)
|
|
} else if (drawMode == DrawMode.ColourMap)
|
|
|
{
|
|
{
|
|
|
- display.DrawTexture(TextureGenerator.TextureFromColourMap(colourMap, mapWidth, mapHeight));
|
|
|
|
|
|
|
+ display.DrawTexture(TextureGenerator.TextureFromColourMap(colourMap, mapChunkSize, mapChunkSize));
|
|
|
}else if(drawMode == DrawMode.Mesh)
|
|
}else if(drawMode == DrawMode.Mesh)
|
|
|
{
|
|
{
|
|
|
- display.DrawMesh(MeshGenerator.GenerateTerrainMesh(noiseMap), TextureGenerator.TextureFromColourMap(colourMap, mapWidth, mapHeight));
|
|
|
|
|
|
|
+ display.DrawMesh(MeshGenerator.GenerateTerrainMesh(noiseMap, MeshHeightMultiplier, meshHeightCurve, levelOfDetail), TextureGenerator.TextureFromColourMap(colourMap, mapChunkSize, mapChunkSize));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void OnValidate()
|
|
private void OnValidate()
|
|
|
{
|
|
{
|
|
|
- if (mapWidth < 1)
|
|
|
|
|
- {
|
|
|
|
|
- mapWidth = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (mapHeight < 1)
|
|
|
|
|
- {
|
|
|
|
|
- mapHeight = 1;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
if (lacunarity < 1)
|
|
if (lacunarity < 1)
|
|
|
{
|
|
{
|
|
|
lacunarity = 1;
|
|
lacunarity = 1;
|