public void GenerateIndividualSprites(AseSheetData sheetData, bool addToContext = false)
        {
            if (SpriteImportOptions == null)
            {
                SpriteImportOptions = SpriteImportOptions.Default;
            }

            if (MainTexture == null)
            {
                GenerateMainTextureFromSheetFile(Path.Combine(
                                                     Path.GetDirectoryName(sheetData.pathToSheetData) ??
                                                     throw new InvalidOperationException("Error while processing data path"),
                                                     sheetData.meta.image));
            }

            if (IndividualSprites != null)
            {
                foreach (var individualSprite in IndividualSprites)
                {
                    Object.DestroyImmediate(individualSprite);
                }
                IndividualSprites.Clear();
            }
            else
            {
                IndividualSprites = new List <Sprite>();
            }

            var addedObjects = new Dictionary <string, int>();



            if (!Config.IsLiteVersion && sheetData.meta.slices?.Length > 0 &&
                (sheetData.meta.frameTags?.Length > 0))
            {
                Debug.LogWarning(
                    "It seems that you have enabled the 'Split slices' option and have animations. This is not well supported and is usually only for static images. No slices will be exported now");
            }


            foreach (var sprite in EnumerateSprites(sheetData))
            {
                //Make sure we prevent import of two assets with the same name
                if (addedObjects.ContainsKey(sprite.name))
                {
                    var newCount = addedObjects[sprite.name] + 1;
                    addedObjects[sprite.name] = newCount;
                    sprite.name = sprite.name + "_" + newCount;
                }
                else
                {
                    addedObjects.Add(sprite.name, 1);
                }

                if (addToContext)
                {
                    AseFileContext.AddObjectToAsset(sprite.name, sprite);
                }

                IndividualSprites.Add(sprite);
            }
        }
        public static IEnumerable <Sprite> EnumerateSprites(Texture2D texture, AseSheetData sheetData, SpriteImportOptions SpriteImportOptions)
        {
            var shouldExportSlices = sheetData.meta.slices?.Length > 0 &&
                                     (sheetData.meta.frameTags == null || sheetData.meta.frameTags.Length == 0);

            if (shouldExportSlices)
            {
                foreach (var slice in sheetData.meta.slices)
                {
                    foreach (var sliceKeyData in slice.keys)
                    {
                        var frame = sheetData.frames[sliceKeyData.frame];
                        var rect  = new Rect(frame.frame.x + sliceKeyData.bounds.x,
                                             frame.frame.h - sliceKeyData.bounds.y - sliceKeyData.bounds.h, sliceKeyData.bounds.w,
                                             sliceKeyData.bounds.h);

                        var sprite = Sprite.Create(texture, rect,
                                                   SpriteImportOptions.pivot,
                                                   SpriteImportOptions.pixelsPerUnit, SpriteImportOptions.extrude,
                                                   SpriteImportOptions.meshType,
                                                   SpriteImportOptions.border);
                        sprite.name = frame.filename + "_" + slice.name;

                        yield return(sprite);
                    }
                }
            }
            else
            {
                foreach (var sheetDataFrame in sheetData.frames)
                {
                    var sprite = Sprite.Create(texture, sheetDataFrame.frame.ToRect(), SpriteImportOptions.pivot,
                                               SpriteImportOptions.pixelsPerUnit, SpriteImportOptions.extrude, SpriteImportOptions.meshType,
                                               SpriteImportOptions.border);
                    sprite.name = sheetDataFrame.filename;
                    yield return(sprite);
                }
            }
        }