static Rect[] PackAndSaveBitmapsAtlas( string atlas_path, Texture2D[] textures, SwfSettingsData settings) { _progressBar.UpdateProgress("pack bitmaps", 0.25f); var atlas_info = PackBitmapsAtlas(textures, settings); RevertTexturePremultipliedAlpha(atlas_info.Atlas); _progressBar.UpdateProgress("save atlas", 0.5f); File.WriteAllBytes(atlas_path, atlas_info.Atlas.EncodeToPNG()); GameObject.DestroyImmediate(atlas_info.Atlas, true); _progressBar.UpdateProgress("import atlas", 0.75f); AssetDatabase.ImportAsset(atlas_path); return(atlas_info.Rects); }
static Texture2D LoadTextureFromData(SwfBitmapData bitmap, SwfSettingsData settings) { var argb32 = settings.BitmapTrimming ? TrimBitmapByRect(bitmap, bitmap.TrimmedRect) : bitmap.ARGB32; var widht = settings.BitmapTrimming ? bitmap.TrimmedRect.width : bitmap.RealWidth; var height = settings.BitmapTrimming ? bitmap.TrimmedRect.height : bitmap.RealHeight; var texture = new Texture2D( widht, height, TextureFormat.ARGB32, false); texture.LoadRawTextureData(argb32); return(texture); }
static BitmapsAtlasInfo PackBitmapsAtlas( Texture2D[] textures, SwfSettingsData settings) { var atlas_padding = Mathf.Max(0, settings.AtlasPadding); var max_atlas_size = Mathf.Max(32, settings.AtlasPowerOfTwo ? Mathf.ClosestPowerOfTwo(settings.MaxAtlasSize) : settings.MaxAtlasSize); var atlas = new Texture2D(0, 0); var rects = atlas.PackTextures(textures, atlas_padding, max_atlas_size); while (rects == null) { max_atlas_size = Mathf.NextPowerOfTwo(max_atlas_size + 1); rects = atlas.PackTextures(textures, atlas_padding, max_atlas_size); } return(settings.AtlasForceSquare && atlas.width != atlas.height ? BitmapsAtlasToSquare(atlas, rects) : new BitmapsAtlasInfo { Atlas = atlas, Rects = rects }); }