private void GenerateSeparateTexturesFromLayers(AssetImportContext ctx, AseFile aseFile)
        {
            SpriteAtlasBuilder atlasBuilder = new SpriteAtlasBuilder(textureSettings, aseFile.Header.Width, aseFile.Header.Height);

            SpriteImportData[] spriteImportData = new SpriteImportData[0];
            List <LayerChunk>  layers           = aseFile.GetChunks <LayerChunk>();

            for (int i = 0; i < layers.Count; i++)
            {
                List <Texture2D> layerFrames = aseFile.GetLayerTexture(i, layers[i]);
                Texture2D        layerAtlas;
                layerAtlas                     = atlasBuilder.GenerateAtlas(layerFrames.ToArray(), out spriteImportData, textureSettings.transparentMask, false);
                layerAtlas.filterMode          = textureSettings.filterMode;
                layerAtlas.alphaIsTransparency = false;
                layerAtlas.wrapMode            = TextureWrapMode.Clamp;
                layerAtlas.name                = layers[i].LayerName;
                //AssetDatabase.CreateAsset( layerAtlas, Path.GetDirectoryName( ctx.assetPath ) + "/" + Path.GetFileNameWithoutExtension( ctx.assetPath ) + "-" + layers[i].LayerName + ".asset" );
                ctx.AddObjectToAsset(layers[i].LayerName, layerAtlas);
                if (i == 0)
                {
                    // assign member "atlas" for ImportSprites() etc below
                    atlas = layerAtlas;
                    ctx.SetMainObject(layerAtlas);
                }
            }

            switch (importType)
            {
            case AseFileImportType.LayerToSprite:
            case AseFileImportType.Sprite:
                ImportSprites(ctx, aseFile, spriteImportData);
                break;

            case AseFileImportType.Tileset:
                ImportTileset(ctx);
                break;
            }
        }
Beispiel #2
0
        private void GenerateSeparateTexturesFromLayers(AssetImportContext ctx, AseFile aseFile)
        {
            SpriteAtlasBuilder atlasBuilder = new SpriteAtlasBuilder(textureSettings, aseFile.Header.Width, aseFile.Header.Height);
            List <LayerChunk>  layers       = aseFile.GetChunks <LayerChunk>();

            SpriteImportData[] spriteImportData = new SpriteImportData[0];

            {
                List <Texture2D> layerFrames = aseFile.GetLayerTexture(0, layers[0]);
                Texture2D        layerAtlas  = atlasBuilder.GenerateAtlas(layerFrames.ToArray(), out spriteImportData, textureSettings.transparentMask, false);
                layerAtlas.filterMode          = textureSettings.filterMode;
                layerAtlas.alphaIsTransparency = false;
                layerAtlas.wrapMode            = TextureWrapMode.Clamp;
                layerAtlas.name = layers[0].LayerName;
                //string assetpath = Path.GetDirectoryName( ctx.assetPath ) + "/" + Path.GetFileNameWithoutExtension( ctx.assetPath ) + "-" + layers[0].LayerName + ".asset";
                //AssetDatabase.CreateAsset( layerAtlas, assetpath );
                ctx.AddObjectToAsset(layers[0].LayerName, layerAtlas);

                switch (importType)
                {
                case AseFileImportType.LayerToSprite:
                case AseFileImportType.Sprite:
                    ImportSprites(ctx, aseFile, spriteImportData, layerAtlas);
                    break;

                case AseFileImportType.Tileset:
                    ImportTileset(ctx, layerAtlas);
                    break;
                }
            }

            for (int i = 1; i < layers.Count; i++)
            {
                List <Texture2D> layerFrames = aseFile.GetLayerTexture(i, layers[i]);
                Texture2D        layerAtlas  = atlasBuilder.GenerateAtlas(layerFrames.ToArray(), out _, textureSettings.transparentMask, false);
                layerAtlas.filterMode          = textureSettings.filterMode;
                layerAtlas.alphaIsTransparency = false;
                layerAtlas.wrapMode            = TextureWrapMode.Clamp;
                layerAtlas.name = layers[i].LayerName;

                ctx.AddObjectToAsset(layers[i].LayerName, layerAtlas);

                /*
                 * string imagepath = Path.GetDirectoryName( ctx.assetPath ) + "/" + Path.GetFileNameWithoutExtension( ctx.assetPath ) + "-" + layers[i].LayerName + ".png";
                 *
                 * Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>( imagepath );
                 * if( texture == null )
                 * {
                 * File.WriteAllBytes( imagepath, layerAtlas.EncodeToPNG() );
                 * AssetDatabase.SaveAssets();
                 * }
                 * else
                 * {
                 *
                 * //texture.SetPixelData( layerAtlas.GetRawTextureData(), 0 );
                 * //EditorUtility.SetDirty( texture );
                 * }
                 * AssetDatabase.Refresh();
                 * Texture2D asdf = AssetDatabase.LoadAssetAtPath<Texture2D>( imagepath );
                 *
                 * //AssetDatabase.CreateAsset( layerAtlas, assetpath );
                 *
                 *
                 * TextureImporter textureImporter = GetAtPath( imagepath ) as TextureImporter;
                 * if( textureImporter != null )
                 * {
                 * SecondarySpriteTexture[] sst = new SecondarySpriteTexture[1];
                 * sst[0].name = "_NormalMap";
                 * sst[0].texture = layerAtlas;
                 * textureImporter.secondarySpriteTextures = sst;
                 *
                 * EditorUtility.SetDirty( textureImporter );
                 * textureImporter.SaveAndReimport();
                 *
                 * }
                 */
            }
        }