|
@@ -6,7 +6,7 @@ using System.Collections.Generic;
|
|
|
public class MapGenerator : MonoBehaviour
|
|
public class MapGenerator : MonoBehaviour
|
|
|
{
|
|
{
|
|
|
|
|
|
|
|
- public enum DrawMode { NoiseMap, ColourMap, Mesh};
|
|
|
|
|
|
|
+ public enum DrawMode { NoiseMap, ColourMap, Mesh, FallOff};
|
|
|
public DrawMode drawMode;
|
|
public DrawMode drawMode;
|
|
|
|
|
|
|
|
public Noise.NormalizeMode normalizeMode;
|
|
public Noise.NormalizeMode normalizeMode;
|
|
@@ -26,6 +26,8 @@ public class MapGenerator : MonoBehaviour
|
|
|
public int seed;
|
|
public int seed;
|
|
|
public Vector2 offset;
|
|
public Vector2 offset;
|
|
|
|
|
|
|
|
|
|
+ public bool useFallOff;
|
|
|
|
|
+
|
|
|
public float meshHeightMultiplier;
|
|
public float meshHeightMultiplier;
|
|
|
public AnimationCurve meshHeightCurve;
|
|
public AnimationCurve meshHeightCurve;
|
|
|
|
|
|
|
@@ -33,9 +35,16 @@ public class MapGenerator : MonoBehaviour
|
|
|
|
|
|
|
|
public TerrainType[] regions;
|
|
public TerrainType[] regions;
|
|
|
|
|
|
|
|
|
|
+ float[,] fallOffMap;
|
|
|
|
|
+
|
|
|
Queue<MapThreadInfo<MapData>> mapDataThreadInfoQueue = new Queue<MapThreadInfo<MapData>>();
|
|
Queue<MapThreadInfo<MapData>> mapDataThreadInfoQueue = new Queue<MapThreadInfo<MapData>>();
|
|
|
Queue<MapThreadInfo<MeshData>> meshDataThreadInfoQueue = new Queue<MapThreadInfo<MeshData>>();
|
|
Queue<MapThreadInfo<MeshData>> meshDataThreadInfoQueue = new Queue<MapThreadInfo<MeshData>>();
|
|
|
|
|
|
|
|
|
|
+ private void Awake()
|
|
|
|
|
+ {
|
|
|
|
|
+ fallOffMap = FallOffGenerator.GenerateFallOffMap(mapChunkSize);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public void DrawMapInEditor()
|
|
public void DrawMapInEditor()
|
|
|
{
|
|
{
|
|
|
MapData mapData = GenerateMapData(Vector2.zero);
|
|
MapData mapData = GenerateMapData(Vector2.zero);
|
|
@@ -53,6 +62,9 @@ public class MapGenerator : MonoBehaviour
|
|
|
else if (drawMode == DrawMode.Mesh)
|
|
else if (drawMode == DrawMode.Mesh)
|
|
|
{
|
|
{
|
|
|
display.DrawMesh(MeshGenerator.GenerateTerrainMesh(mapData.heightMap, meshHeightMultiplier, meshHeightCurve, editorPreviewLOD), TextureGenerator.TextureFromColourMap(mapData.colourMap, mapChunkSize, mapChunkSize));
|
|
display.DrawMesh(MeshGenerator.GenerateTerrainMesh(mapData.heightMap, meshHeightMultiplier, meshHeightCurve, editorPreviewLOD), TextureGenerator.TextureFromColourMap(mapData.colourMap, mapChunkSize, mapChunkSize));
|
|
|
|
|
+ }else if (drawMode ==DrawMode.FallOff)
|
|
|
|
|
+ {
|
|
|
|
|
+ display.DrawTexture(TextureGenerator.TextureFromHeightMap(FallOffGenerator.GenerateFallOffMap(mapChunkSize)));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -124,6 +136,10 @@ public class MapGenerator : MonoBehaviour
|
|
|
{
|
|
{
|
|
|
for (int x=0; x<mapChunkSize; x++)
|
|
for (int x=0; x<mapChunkSize; x++)
|
|
|
{
|
|
{
|
|
|
|
|
+ if (useFallOff)
|
|
|
|
|
+ {
|
|
|
|
|
+ noiseMap[x, y] = Mathf.Clamp(noiseMap[x, y] - fallOffMap[x, y], 0, 1);
|
|
|
|
|
+ }
|
|
|
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++)
|
|
|
{
|
|
{
|
|
@@ -152,6 +168,7 @@ public class MapGenerator : MonoBehaviour
|
|
|
{
|
|
{
|
|
|
octaves = 0;
|
|
octaves = 0;
|
|
|
}
|
|
}
|
|
|
|
|
+ fallOffMap = FallOffGenerator.GenerateFallOffMap(mapChunkSize);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
struct MapThreadInfo<T>
|
|
struct MapThreadInfo<T>
|