bool AddSpriteIfCan(ref string metaData, SpriteDifferenceData spriteToAdd)
    {
        bool isLeftAtlas = true;
        bool isNeedAddSprtieToSpritesList = true;

        SpriteData[] sprites;

        if (spriteToAdd.copyDirection == SpriteDifferenceData.CopyDirection.LeftToRight)
        {
            isLeftAtlas = false;
        }

        sprites = (isLeftAtlas) ? _sprites1 : _sprites2;

        string AddingSpriteID = (isLeftAtlas) ? spriteToAdd.id2 : spriteToAdd.id1; // INVERT IDs (COPY FORM -> TO)

        SpriteData[] spritesNew = new SpriteData[sprites.Length + 1];

        for (int i = 0; i < sprites.Length; i++)
        {
            if (sprites[i].id == AddingSpriteID)
            {
                Debug.LogError("ATLAS CONTAINS ID:" + AddingSpriteID);
                //return false;
                isNeedAddSprtieToSpritesList = false;
            }

            spritesNew[i] = sprites[i];
        }

        string addingName    = (isLeftAtlas) ? spriteToAdd.name2 : spriteToAdd.name1;
        string addingRawData = (isLeftAtlas) ? spriteToAdd.allRawData2 : spriteToAdd.allRawData1;

        spritesNew[spritesNew.Length - 1]               = new SpriteData(AddingSpriteID, addingName);
        spritesNew[spritesNew.Length - 1].allRawData    = addingRawData;
        spritesNew[spritesNew.Length - 1].isExpanded    = false;
        spritesNew[spritesNew.Length - 1].isDifferent   = false;
        spritesNew[spritesNew.Length - 1].isDifferentID = false;

        metaData = (isNeedAddSprtieToSpritesList) ? AddSptiteIntoSpriteList(metaData, spritesNew) : metaData; // ADD TO SPRITES LIST AT THE TOP OF META
        metaData = AddSpriteRawDataInAtlasMeta(metaData, spritesNew);                                         // ADD RAW DATA TO THE BOTTOM OF META

        return(true);
    }
    void CompareSprites(ref SpriteData[] sprites1, ref SpriteData[] sprites2, ref List <SpriteDifferenceData> spriteDifferenceData)
    {
        for (int i = 0; i < sprites1.Length; i++)// SpriteData sprite in sprites1
        {
            bool isDifferent   = false;
            bool isDifferentID = false;

            int id = GetSpriteID(sprites1[i].name, sprites2);
            if (id < 0)
            {
                SpriteDifferenceData item = new SpriteDifferenceData();

                item.isDifferentID = true;
                item.name1         = sprites1[i].name;
                item.name2         = "NONE";
                item.id1           = sprites1[i].id;
                item.id2           = "-------";
                item.allRawData1   = sprites1[i].allRawData;
                item.allRawData2   = "";

                spriteDifferenceData.Add(item);
                continue;
            }

            if (sprites1[i].allRawData == sprites2[id].allRawData)
            {
                sprites1[i].isDifferent  = false;
                sprites2[id].isDifferent = false;
            }
            else
            {
                isDifferent = true;
            }

            if (sprites1[i].id == sprites2[id].id)
            {
                sprites1[i].isDifferentID  = false;
                sprites2[id].isDifferentID = false;
            }
            else
            {
                isDifferent   = true;
                isDifferentID = true;
            }

            if (isDifferent)
            {
                SpriteDifferenceData item = new SpriteDifferenceData();

                if (isDifferentID)
                {
                    item.isDifferentID = true;
                }

                item.name1       = sprites1[i].name;
                item.name2       = sprites2[id].name;
                item.id1         = sprites1[i].id;
                item.id2         = sprites2[id].id;
                item.allRawData1 = sprites1[i].allRawData;
                item.allRawData2 = sprites2[id].allRawData;

                spriteDifferenceData.Add(item);
            }
        }

        for (int i = 0; i < sprites2.Length; i++)// SpriteData sprite in sprites2
        {
            int id = GetSpriteID(sprites2[i].name, sprites1);
            if (id < 0)
            {
                SpriteDifferenceData item = new SpriteDifferenceData();

                item.isDifferentID = true;
                item.name1         = "NONE";
                item.name2         = sprites2[i].name;
                item.id1           = "-------";
                item.id2           = sprites2[i].id;
                item.allRawData1   = "";
                item.allRawData2   = sprites2[i].allRawData;

                spriteDifferenceData.Add(item);
                continue;
            }
        }
    }