Example #1
0
    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();
        }
    }
Example #2
0
    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);
    }
Example #3
0
    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);
    }