public void InitMesher()
        {
            if (theme == null)
            {
                Debug.LogError("theme is null! drawer not initialized!");
                return;
            }

            if (theme.Is3DTheme)
            {
                if (drawer == null || drawer.Get <TileMesher3D>() == null)
                {
                    drawer?.Dispose();
                    drawer = MeshBuilderDrawer.Create <TileMesher3D>(renderInfo);
                }

                drawer.Get <TileMesher3D>().Init(tileData, themeIndex, theme, cellSize, Settings3D);
            }
            else
            {
                if (drawer == null || drawer.Get <TileMesher2D>() == null)
                {
                    drawer?.Dispose();
                    drawer = MeshBuilderDrawer.Create <TileMesher2D>(renderInfo);
                }

                drawer.Get <TileMesher2D>().Init(tileData, yLayer, themeIndex, theme);
            }
        }
        public void Dispose()
        {
            if (drawer != null)
            {
                drawer.Dispose();
                drawer = null;
            }

            if (cachedTileData != null)
            {
                cachedTileData.Dispose();
                cachedTileData = null;
            }

            tileData = null;
        }