void Awake()
    {
        drawerComponent = GetComponent <MeshBuilderDrawerComponent>();

        dataExtents = new Extents(16, 4, 16);
        dataVolume  = new DataVolume(dataExtents);
        FillData(dataVolume);

        var groundMesher = new TileMesher3D();

        groundMesher.Init(dataVolume, 0, palette, cellSize,
                          new TileMesher3D.Settings()
        {
            filledBoundaries = Tile.Direction.None,
            skipDirections   = Tile.Direction.YAxis,
        });
        Add(groundMesher, ground);
        if (useGroundNormalAlignment)
        {
            //       builders[builders.Count - 1].AddAligner(cellSize);
        }

        var topGroundMesher = new GridMesher();

        topGroundMesher.Init(dataVolume, GroundIndex, cellSize, 3, GridMesher.UVMode.Normalized);
        topGroundMesher.InitHeightMapScaleFromHeightAvgOffset(groundHeightMap, groundMaxHeight);
        Add(topGroundMesher, grass);

        var waterMesher = new GridMesher();

        waterMesher.Init(dataVolume, WaterIndex, cellSize, 1, GridMesher.UVMode.NoScaling, new float3(0, -0.2f, 0));
        Add(waterMesher, water);

        var rockMesher = new TileMesher3D();

        rockMesher.Init(dataVolume, 1, palette, cellSize);
        Add(rockMesher, rock);

        foreach (var drawer in drawerComponent.Drawers)
        {
            drawer.StartBuilder();
        }

        StartCoroutine(CompleteMesh());
    }
    void Awake()
    {
        drawerComponent = GetComponent <MeshBuilderDrawerComponent>();

        dataExtents = new Extents(16, 4, 16);
        dataVolume  = new DataVolume(dataExtents);
        FillData(dataVolume);

        var walkwayMesher = new TileMesher2D();

        walkwayMesher.Init(dataVolume, 0, WalkwayFill, walkwayTheme, cellSize, new TileMesher2D.Settings {
            centerRandomRotation = true
        });
        Add(walkwayMesher, walkway);

        var walkwayBgMesher = new GridMesher();

        walkwayBgMesher.Init(dataVolume, WalkwayFill, cellSize, 3, GridMesher.UVMode.Normalized, new float3(0, -1f, 0));
        walkwayBgMesher.InitHeightMapScaleFromHeightAvgOffset(groundHeightMap, groundMaxHeight);
        Add(walkwayBgMesher, walkwayBg);

        var waterMesher = new GridMesher();

        waterMesher.Init(dataVolume, WaterFill, cellSize, 1, GridMesher.UVMode.NoScaling, new float3(0, -1.2f, 0));
        Add(waterMesher, water);

        var wallMesher = new TileMesher2D();

        wallMesher.Init(dataVolume, 0, WallFill, wallTheme, cellSize, new TileMesher2D.Settings()
        {
            emptyBoundaries = Tile.Direction.None
        });
        Add(wallMesher, wall);

        foreach (var drawer in drawerComponent.Drawers)
        {
            drawer.StartBuilder();
        }
    }