Пример #1
0
        /// <summary>
        /// Gets a sprite list with applied actions.
        /// </summary>
        /// <returns>The sprite list with applied actions.</returns>
        public List <SPSpriteInfo> GetSpriteListWithAppliedActions()
        {
            // Create temporary sprite info list
            List <SPSpriteInfo> spriteInfoList = new List <SPSpriteInfo>();

            // Add the current sprites
            foreach (SPSpriteInfo si in this.m_Sprites)
            {
                spriteInfoList.Add(si);
            }

            // Apply the remove actions
            foreach (SPAction ra in this.GetRemoveSpriteActions())
            {
                if (spriteInfoList.Contains(ra.spriteInfo))
                {
                    spriteInfoList.Remove(ra.spriteInfo);
                }
            }

            // Apply the add actions
            foreach (SPAction asa in this.GetAddSpriteActions())
            {
                SPSpriteInfo si = new SPSpriteInfo();
                si.source = asa.resource;
                spriteInfoList.Add(si);
            }

            // return the list
            return(spriteInfoList);
        }
        /// <summary>
        /// Queues remove sprite action.
        /// </summary>
        /// <param name="spriteInfo">Sprite info.</param>
        public void QueueAction_RemoveSprite(SPSpriteInfo spriteInfo)
        {
            if (spriteInfo == null)
            {
                return;
            }

            if (!this.m_Sprites.Contains(spriteInfo))
            {
                return;
            }

            // Check if that sprite is already added to the queue
            if (this.m_PendingActions.Find(a =>
                                           (a.actionType == SPAction.ActionType.Sprite_Remove && a.spriteInfo == spriteInfo)) != null)
            {
                return;
            }

            SPAction action = new SPAction();

            action.actionType = SPAction.ActionType.Sprite_Remove;
            action.spriteInfo = spriteInfo;
            this.m_PendingActions.Add(action);
        }
Пример #3
0
 /// <summary>
 /// Adds sprite to the sprite collection.
 /// </summary>
 /// <param name="spriteInfo">Sprite info.</param>
 public void AddSprite(SPSpriteInfo spriteInfo)
 {
     if (spriteInfo != null)
     {
         this.m_Sprites.Add(spriteInfo);
     }
 }
Пример #4
0
 /// <summary>
 /// Changes the sprite source.
 /// </summary>
 /// <param name="spriteInfo">Sprite info.</param>
 /// <param name="newSource">New source.</param>
 public void ChangeSpriteSource(SPSpriteInfo spriteInfo, Object newSource)
 {
     // Validate the new source
     if (newSource == null)
     {
         spriteInfo.source = null;
     }
     else if (newSource is Texture2D || newSource is Sprite)
     {
         spriteInfo.source = newSource;
     }
 }
Пример #5
0
 private void InitDic()
 {
     SpriteDic.Clear();
     for (int i = 0; i < m_Sprites.Count; i++)
     {
         SPSpriteInfo info = m_Sprites[i];
         if (info == null)
         {
             continue;
         }
         SpriteDic[info.name] = info.targetSprite;
     }
 }
Пример #6
0
 public void QueueAction_DeleteSprites(Object[] resources)
 {
     foreach (Object resource in resources)
     {
         if (resource == null)
         {
             continue;
         }
         SPSpriteInfo sp = this.m_Sprites.Find(a => (a.name == resource.name));
         if (sp != null)
         {
             QueueAction_RemoveSprite(sp);
         }
     }
 }
Пример #7
0
        /// <summary>
        /// Changes the sprite source.
        /// </summary>
        /// <param name="spriteInfo">Sprite info.</param>
        /// <param name="newSource">New source.</param>
        public void ChangeSpriteSource(SPSpriteInfo spriteInfo, Object newSource)
        {
            // Validate the new source
            if (newSource == null)
            {
                spriteInfo.source = null;
            }
            else if (newSource is Texture2D || newSource is Sprite)
            {
                spriteInfo.source = newSource;
            }

                        #if UNITY_EDITOR
            EditorUtility.SetDirty(this);
                        #endif
        }
Пример #8
0
        public void QueueAction_UpdateSprite(Object resource)
        {
            if (resource is Texture2D || resource is Sprite)
            {
                //不存在不做处理
                SPSpriteInfo spriteInfo = this.m_Sprites.Find(a => (a.name == resource.name));
                if (spriteInfo == null)
                {
                    return;
                }

                SPAction action_delete = new SPAction();
                action_delete.actionType = SPAction.ActionType.Sprite_Remove;
                action_delete.spriteInfo = spriteInfo;
                this.m_PendingActions.Add(action_delete);

                SPAction action_add = new SPAction();
                action_add.actionType = SPAction.ActionType.Sprite_Add;
                action_add.resource   = resource;
                this.m_PendingActions.Add(action_add);
            }
        }