Beispiel #1
0
        public override void Apply()
        {
            if (SpriteRects != null && SpriteRects.Length > 0)
            {
                List <AseFileSpriteImportData> newImportData = new List <AseFileSpriteImportData>();

                foreach (SpriteRect spriteRect in SpriteRects)
                {
                    AseFileSpriteImportData data = new AseFileSpriteImportData()
                    {
                        alignment = spriteRect.alignment,
                        border    = spriteRect.border,
                        name      = spriteRect.name,
                        pivot     = spriteRect.pivot,
                        rect      = spriteRect.rect,
                        spriteID  = spriteRect.spriteID.ToString()
                    };

                    AseFileSpriteImportData current = Array.Find <AseFileSpriteImportData>(SpriteImportData, d => d.spriteID == spriteRect.spriteID.ToString());

                    if (current != null)
                    {
                        data.outline            = current.outline;
                        data.tessellationDetail = current.tessellationDetail;
                    }
                    else
                    {
                        data.outline            = SpriteAtlasBuilder.GenerateRectOutline(data.rect);
                        data.tessellationDetail = 0;
                    }

                    newImportData.Add(data);
                }

                SpriteRects = new SpriteRect[0];

                SpriteImportData = newImportData.ToArray();
                EditorUtility.SetDirty(Importer);
            }

            AssetDatabase.WriteImportSettingsIfDirty(AssetPath);
            //SaveAndReimport();

            AssetDatabase.Refresh();
            AssetDatabase.LoadAllAssetsAtPath(AssetPath);
            EditorApplication.RepaintProjectWindow();
        }
Beispiel #2
0
        public AseFileSpriteImportData[] GetSingleSpriteImportData()
        {
            Rect spriteRect = new Rect(0, 0, textureWidth, textureHeight);

            return(new AseFileSpriteImportData[]
            {
                new AseFileSpriteImportData()
                {
                    alignment = SpriteAlignment.Center,
                    border = Vector4.zero,
                    name = name,
                    outline = SpriteAtlasBuilder.GenerateRectOutline(spriteRect),
                    pivot = new Vector2(0.5f, 0.5f),
                    rect = spriteRect,
                    spriteID = GUID.Generate().ToString(),
                    tessellationDetail = 0
                }
            });
        }
        public void SetSingleSpriteImportData()
        {
            Rect spriteRect = new Rect(0, atlas.height - AsepriteFile.Header.Height, AsepriteFile.Header.Width, AsepriteFile.Header.Height);

            SpriteImportData = new AseFileSpriteImportData[]
            {
                new AseFileSpriteImportData()
                {
                    alignment          = SpriteAlignment.Center,
                    border             = Vector4.zero,
                    name               = name,
                    outline            = SpriteAtlasBuilder.GenerateRectOutline(spriteRect),
                    pivot              = new Vector2(0.5f, 0.5f),
                    rect               = spriteRect,
                    spriteID           = GUID.Generate().ToString(),
                    tessellationDetail = 0
                }
            };

            AnimationSettings = null;
        }
Beispiel #4
0
        public void GenerateAtlasTexture(bool overwriteSprites = false)
        {
            if (atlas != null)
            {
                return;
            }

            SpriteAtlasBuilder atlasBuilder = new SpriteAtlasBuilder(AsepriteFile.Header.Width, AsepriteFile.Header.Height);

            Texture2D[] frames = AsepriteFile.GetFrames();

            atlas = atlasBuilder.GenerateAtlas(frames, out AseFileSpriteImportData[] importData);

            textureWidth  = atlas.width;
            textureHeight = atlas.height;
            frameCount    = importData.Length;

            // Rename sprites

            if (overwriteSprites)
            {
                for (int i = 0; i < importData.Length; i++)
                {
                    importData[i].name = string.Format("{0}_{1}", name, importData[i].name);
                }

                SpriteRects      = new SpriteRect[0];
                SpriteImportData = importData;

                if (SpriteImportData.Length > 1)
                {
                    TextureImportSettings.spriteMode = (int)SpriteImportMode.Multiple;
                }


                AssetDatabase.WriteImportSettingsIfDirty(AssetPath);
            }
        }