public void DrawMap()
    {
        MapData mapData = GenerateMapData(Vector2.zero);

        MapDisplay mapDisplay = FindObjectOfType <MapDisplay>();

        switch (drawMode)
        {
        default:
        case DrawMode.NoiseMap:
            mapDisplay.DrawTexture(TextureGenerator.FromHeightMap(mapData.heightMap));
            break;

        case DrawMode.ColorMap:
            mapDisplay.DrawTexture(TextureGenerator.FromColorMap(mapData.colorMap, mapChunkSize, mapChunkSize));
            break;

        case DrawMode.FalloffMap:
            mapDisplay.DrawTexture(TextureGenerator.FromHeightMap(FalloffMapGenerator.GenerateFalloffMap(mapChunkSize)));
            break;

        case DrawMode.Mesh:
            mapDisplay.DrawMesh(
                MeshGenerator.GenerateTerrainMeshData(mapData.heightMap, terrainData.meshHeightMultiplier, terrainData.meshHeightCurve, editorLevelOfDetail, terrainData.applyFlatShading),
                TextureGenerator.FromColorMap(mapData.colorMap, mapChunkSize, mapChunkSize)
                );
            break;
        }
    }
        private void OnMapDataReceived(MapData mapData)
        {
            _mapData         = mapData;
            _mapDataReceived = true;

            Texture2D texture = TextureGenerator.FromColorMap(mapData.colorMap, MapGenerator.mapChunkSize, MapGenerator.mapChunkSize);

            _meshRenderer.material.SetTexture("_MainTex", texture);

            UpdateTerrainChunk();
        }