| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using UnityEngine;
- namespace TheraBytes.BetterUi
- {
- [Serializable]
- public class Transitions
- {
- public static readonly string[] OnOffStateNames = { "On", "Off", };
- public static readonly string[] ShowHideStateNames = { "Show", "Hide", };
- public static readonly string[] SelectionStateNames = { "Normal", "Highlighted", "Pressed",
- #if UNITY_2019_1_OR_NEWER
- "Selected",
- #endif
- "Disabled", };
- public enum TransitionMode
- {
- None = 0,
- ColorTint = 1,
- SpriteSwap = 2,
- Animation = 3,
- ObjectActiveness = 4,
- Alpha = 5,
- MaterialProperty = 6,
- Color32Tint = 7,
- LocationAnimationTransition = 8,
- CustomCallback = 9,
- }
- public TransitionMode Mode { get { return mode; } }
- public ReadOnlyCollection<string> StateNames { get { return stateNames.ToList().AsReadOnly(); } }
- [SerializeField]
- TransitionMode mode;
- [SerializeField]
- string[] stateNames;
- [SerializeField]
- ColorTransitions colorTransitions;
- [SerializeField]
- Color32Transitions color32Transitions;
- [SerializeField]
- SpriteSwapTransitions spriteSwapTransitions;
- [SerializeField]
- AnimationTransitions animationTransitions;
- [SerializeField]
- ObjectActivenessTransitions activenessTransitions;
- [SerializeField]
- AlphaTransitions alphaTransitions;
- [SerializeField]
- MaterialPropertyTransition materialPropertyTransitions;
- [SerializeField]
- LocationAnimationTransitions locationAnimationTransitions;
- [SerializeField]
- CustomTransitions customTransitions;
- public TransitionStateCollection TransitionStates
- {
- get
- {
- switch (mode)
- {
- case TransitionMode.ColorTint: return colorTransitions;
- case TransitionMode.Color32Tint: return color32Transitions;
- case TransitionMode.SpriteSwap: return spriteSwapTransitions;
- case TransitionMode.Animation: return animationTransitions;
- case TransitionMode.ObjectActiveness: return activenessTransitions;
- case TransitionMode.Alpha: return alphaTransitions;
- case TransitionMode.MaterialProperty: return materialPropertyTransitions;
- case TransitionMode.LocationAnimationTransition: return locationAnimationTransitions;
- case TransitionMode.CustomCallback: return customTransitions;
- default: return null;
- }
- }
- }
- public Transitions(params string[] stateNames)
- {
- this.stateNames = stateNames;
- }
- public void SetState(string stateName, bool instant)
- {
- if (TransitionStates == null)
- return;
- if (!stateNames.Contains(stateName))
- return;
- TransitionStates.Apply(stateName, instant);
- }
- public void SetMode(TransitionMode mode)
- {
- this.mode = mode;
-
- this.colorTransitions = null;
- this.color32Transitions = null;
- this.spriteSwapTransitions = null;
- this.animationTransitions = null;
- this.activenessTransitions = null;
- this.alphaTransitions = null;
- this.locationAnimationTransitions = null;
- this.customTransitions = null;
- switch (mode)
- {
- case TransitionMode.None:
- break;
- case TransitionMode.ColorTint:
- this.colorTransitions = new ColorTransitions(stateNames);
- break;
- case TransitionMode.Color32Tint:
- this.color32Transitions = new Color32Transitions(stateNames);
- break;
- case TransitionMode.SpriteSwap:
- this.spriteSwapTransitions = new SpriteSwapTransitions(stateNames);
- break;
- case TransitionMode.Animation:
- this.animationTransitions = new AnimationTransitions(stateNames);
- break;
- case TransitionMode.ObjectActiveness:
- this.activenessTransitions = new ObjectActivenessTransitions(stateNames);
- break;
- case TransitionMode.Alpha:
- this.alphaTransitions = new AlphaTransitions(stateNames);
- break;
- case TransitionMode.MaterialProperty:
- this.materialPropertyTransitions = new MaterialPropertyTransition(stateNames);
- break;
- case TransitionMode.LocationAnimationTransition:
- this.locationAnimationTransitions = new LocationAnimationTransitions(stateNames);
- break;
- case TransitionMode.CustomCallback:
- this.customTransitions = new CustomTransitions(stateNames);
- break;
- default: throw new NotImplementedException();
- }
- }
- public void ComplementStateNames(string[] stateNames)
- {
- foreach(string name in stateNames)
- {
- if (this.stateNames.Contains(name))
- continue;
-
- switch (mode)
- {
- case TransitionMode.None:
- break;
- case TransitionMode.ColorTint:
- this.colorTransitions.AddStateObject(name);
- this.colorTransitions.SortStates(stateNames);
- break;
- case TransitionMode.Color32Tint:
- this.color32Transitions.AddStateObject(name);
- this.color32Transitions.SortStates(stateNames);
- break;
- case TransitionMode.SpriteSwap:
- this.spriteSwapTransitions.AddStateObject(name);
- this.spriteSwapTransitions.SortStates(stateNames);
- break;
- case TransitionMode.Animation:
- this.animationTransitions.AddStateObject(name);
- this.animationTransitions.SortStates(stateNames);
- break;
- case TransitionMode.ObjectActiveness:
- this.activenessTransitions.AddStateObject(name);
- this.activenessTransitions.SortStates(stateNames);
- break;
- case TransitionMode.Alpha:
- this.alphaTransitions.AddStateObject(name);
- this.alphaTransitions.SortStates(stateNames);
- break;
- case TransitionMode.MaterialProperty:
- this.materialPropertyTransitions.AddStateObject(name);
- this.materialPropertyTransitions.SortStates(stateNames);
- break;
- case TransitionMode.LocationAnimationTransition:
- this.locationAnimationTransitions.AddStateObject(name);
- this.locationAnimationTransitions.SortStates(stateNames);
- break;
- case TransitionMode.CustomCallback:
- this.customTransitions.AddStateObject(name);
- this.customTransitions.SortStates(stateNames);
- break;
- default: throw new NotImplementedException();
- }
- }
-
- this.stateNames = stateNames;
- }
- }
- }
|