void OnGUI() { GUILayout.Label("- Island Parameters -"); GUILayout.Space(20); // seed GUILayout.BeginHorizontal(); GUILayout.Label("Seed: "); _seed = EditorGUILayout.IntField(_seed); if (GUILayout.Button("Generate")) { _seed = MakeSeed(); } GUILayout.EndHorizontal(); // size GUILayout.BeginHorizontal(); _size = (WorldGenerator.IslandSize)EditorGUILayout.EnumPopup("Size: ", _size); GUILayout.EndHorizontal(); // number of levels GUILayout.BeginHorizontal(); _levels = EditorGUILayout.IntField("Levels: ", _levels); GUILayout.EndHorizontal(); GUILayout.Space(20); if (GUILayout.Button("Generate Island")) { GenerateIsland(); } }
public IslandData Generate(WorldGenerator.IslandSize size, int seed, Vector3 position, float[][] moistureNoise, float[][] tempNoise, int numHeightLevels, bool fromTool = false) { if (_terrainSplats == null) { _terrainSplats = LoadPrototypes(); } _id = IslandID++; int realSize = (int)size; PerlinGenerator islandNoiseGen = new PerlinGenerator(); int octaves = 5; float[][] noise = islandNoiseGen.Generate(seed, octaves, realSize); float[,] heights = CreateHeightMap(noise, realSize, numHeightLevels); Vector3 posWithOffset = new Vector3(position.x - (realSize / 2f), position.y, position.z - (realSize / 2f)); TerrainData tData = ApplyDataToTerrain(ref _currentTerrain, heights, realSize, numHeightLevels, fromTool); _currentTerrain.transform.position = posWithOffset; IslandData data = new IslandData(_id, realSize, posWithOffset, ref tData); //PopulateTiles(ref data, posWithOffset, moistureNoise, tempNoise, heights, realSize, ref tData); //DebugDrawGrid(posWithOffset, realSize, heights); PlaceDetails(heights, realSize, ref data, seed); return(data); }
public GameObject Generate(WorldGenerator.IslandSize size, int seed, int numHeightLevels) { //fake climate data PerlinGenerator moistureNoiseGen = new PerlinGenerator(); PerlinGenerator tempNoiseGen = new PerlinGenerator(); int octaves = 9; // higher octaves (10+) create large biomes float[][] moistureNoise = moistureNoiseGen.Generate(seed, octaves, (int)size); float[][] temperatureNoise = tempNoiseGen.Generate(seed, octaves, (int)size); // generate island Generate(size, seed, Vector3.zero, moistureNoise, temperatureNoise, numHeightLevels, true); return(_currentTerrain); }