コード例 #1
0
        SpriteNameFileIdPairExt[] GetSerializedNameFileIdTable(SerializedObject so)
        {
            var nameFileIdTableSo = so.FindProperty("m_SpriteSheet.m_NameFileIdTable");
            var arraySize         = nameFileIdTableSo.arraySize;
            var nameFileIdPairs   = new SpriteNameFileIdPairExt[arraySize];

            if (nameFileIdPairs.Length > 0)
            {
                var sp = nameFileIdTableSo.GetArrayElementAtIndex(0);
                for (var i = 0; i < nameFileIdTableSo.arraySize; ++i)
                {
                    var spriteNameFileId = SpriteNameFileIdPairExt.GetValue(sp);
                    // check if this internal nid is already in one of the sprite.
                    // We don't check name as changing internal id can cause reference to be lost
                    var spriteRect = m_SpritesMultiple.FirstOrDefault(x => x.internalID == spriteNameFileId.internalID);
                    if (spriteRect != null)
                    {
                        spriteNameFileId.SetFileGUID(spriteRect.spriteID);
                    }
                    nameFileIdPairs[i] = spriteNameFileId;
                    sp.Next(false);
                }
            }

            return(nameFileIdPairs);
        }
コード例 #2
0
        void ISpriteNameFileIdDataProvider.SetNameFileIdPairs(IEnumerable <SpriteNameFileIdPair> pairs)
        {
            var newFileIdPair = new SpriteNameFileIdPairExt[pairs.Count()];
            var count         = 0;

            foreach (var pair in pairs)
            {
                var guid       = pair.GetFileGUID();
                var internalId = (long)guid.GetHashCode();
                //check if guid is in current name id table
                var idPair = m_NameFileIdPairs.FirstOrDefault(x => x.GetFileGUID() == guid);
                if (idPair != null)
                {
                    internalId = idPair.internalID;
                }
                else
                {
                    // check if guid is in current sprite list
                    var sr = m_SpritesMultiple.FirstOrDefault(x => x.spriteID == guid);
                    if (sr != null)
                    {
                        internalId = sr.internalID;
                    }
                }
                newFileIdPair[count] = new SpriteNameFileIdPairExt(pair.name, guid, internalId);
                count++;
            }

            m_NameFileIdPairs = newFileIdPair;
        }