Beispiel #1
0
        static ImportedTile[] ImportTileset(TSX.Tileset tileset, string tilesetDir, string sourceTilesetDirectory, int cellWidth, int cellHeight, int pixelsPerUnit)
        {
            string tilesetSpriteTargetDir = tilesetDir + Path.DirectorySeparatorChar + tileset.name;

            if (!ImportUtils.CreateAssetFolderIfMissing(tilesetSpriteTargetDir, false))
            {
                return(null);
            }
            string tilesetTileTargetDir = tilesetDir + Path.DirectorySeparatorChar + tileset.name + Path.DirectorySeparatorChar + "TileAssets";

            if (!ImportUtils.CreateAssetFolderIfMissing(tilesetTileTargetDir, false))
            {
                return(null);
            }

            TSX.Tile[] tiles = tileset.tiles;

            string[] imageTargetPaths   = null;
            Sprite[] tileSprites        = null;
            string[] tileTargetPaths    = null;
            bool     singleImageTileset = tileset.IsSingleImageTileset();

            if (singleImageTileset)
            {
                if (tileset.image != null)
                {
                    string imageSourcePath;
                    string imageTargetPath;
                    CreateSingleImageTilesetPaths(tileset, sourceTilesetDirectory, tilesetSpriteTargetDir, tilesetTileTargetDir, out imageSourcePath, out imageTargetPath, out tileTargetPaths);
                    CopyImages(new string[] { imageSourcePath }, new string[] { imageTargetPath });

                    string subSpriteNameBase = Path.GetFileNameWithoutExtension(imageSourcePath);
                    if (!CreateTilemapSprite(imageTargetPath, cellWidth, cellHeight, pixelsPerUnit, tileset /*tileset.image.width, tileset.image.height, tileset.tilewidth, tileset.tileheight, tileset.tilecount*/, subSpriteNameBase, out tileSprites))
                    {
                        return(null);
                    }
                }
                else
                {
                    Debug.LogError("Tileset " + tileset.name + " is empty!");
                }
            }
            else
            {
                string[] imageSourcePaths = new string[tiles.Length];
                imageTargetPaths = new string[tiles.Length];
                tileTargetPaths  = new string[tiles.Length];
                CreateTilePaths(tiles, sourceTilesetDirectory, tilesetSpriteTargetDir, tilesetTileTargetDir, imageSourcePaths, imageTargetPaths, tileTargetPaths);
                CopyImages(imageSourcePaths, imageTargetPaths);

                tileSprites = new Sprite[tiles.Length];
                CreateSpriteAssets(tiles, tileset.name, pixelsPerUnit, cellWidth, cellHeight, imageTargetPaths, tileSprites);
            }

            if (tileSprites == null)
            {
                Debug.LogError("Tile sprites ended up null when importing tileset: " + tileset.name);
                return(null);
            }
            if (tileSprites.Length == 0)
            {
                Debug.LogError("0 tile sprites found from texture assets for tileset: " + tileset.name);
                return(null);
            }

            ImportedTile[] tileAssets;
            bool           success = CreateTileAssets(tiles, singleImageTileset, tileset.name, pixelsPerUnit, tileSprites, tileTargetPaths, out tileAssets);

            EditorUtility.ClearProgressBar();

            if (!success)
            {
                return(null);
            }

            CreatePalette(tileset.name, tilesetTileTargetDir, tileAssets, singleImageTileset, tileset.tilewidth, tileset.tileheight, tileset.columns, cellWidth, cellHeight);
            return(tileAssets);
        }