//Function to generate the noise map
    MapData GenerateMapData(Vector2 centre)
    {
        float[,] noiseMap = TerrainNoise.GenerateNoiseMap(mapChunkSize + 2, mapChunkSize + 2, seed, noiseScale, octaves, persistance, lacunarity, centre + offset, normalizeMode);

        //Generating colored map
        Color[] colorMap = new Color[mapChunkSize * mapChunkSize];             //Array to save all colors used
        for (int y = 0; y < mapChunkSize; y++)
        {
            for (int x = 0; x < mapChunkSize; x++)
            {
                if (useIslandGenerator)
                {
                    noiseMap[x, y] = Mathf.Clamp01(noiseMap[x, y] - islandGenMap[x, y]);
                }
                float currentHeight = noiseMap[x, y];
                for (int i = 0; i < regions.Length; i++)         //Loop to check which region the current height value falls into
                {
                    if (currentHeight >= regions[i].height)
                    {
                        colorMap[y * mapChunkSize + x] = regions[i].color;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }

        return(new MapData(noiseMap, colorMap));
    }
    public TerrainData GenerateTerrainData(TerrainSettings terrainSettings, Vector2Int size, Vector2 offset)
    {
        int width  = size.x;
        int height = size.y;

        AnimationCurve heightCurve = new AnimationCurve(terrainSettings.heightCurve.keys);

        float[,] heightMap = TerrainNoise.GenerateNoiseMap(width, height, terrainSettings.noiseSeed, terrainSettings.noiseScale, terrainSettings.octaves, terrainSettings.persistance, terrainSettings.lacunarity, offset, terrainSettings.normalizeMode);
        Color[]  colorMap = CreateColorMap(heightMap, terrainSettings.regions);
        MeshData meshData = MeshGenerator.GenerateMesh(heightMap, terrainSettings.heightScale, heightCurve);

        return(new TerrainData(heightMap, colorMap, meshData, size, terrainSettings));
    }