/// <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); }
/// <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); } }
/// <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; } }
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; } }
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); } } }
/// <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 }
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); } }