CustomTransition.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using UnityEngine;
  6. using UnityEngine.Events;
  7. using UnityEngine.UI;
  8. #pragma warning disable 0649 // disable "never assigned" warnings
  9. namespace TheraBytes.BetterUi
  10. {
  11. [Serializable]
  12. public class CustomTransitions : TransitionStateCollection<UnityEvent>
  13. {
  14. [Serializable]
  15. public class CustomTransitionState : TransitionState
  16. {
  17. public CustomTransitionState(string name)
  18. : base(name, new UnityEvent())
  19. { }
  20. }
  21. [SerializeField]
  22. List<CustomTransitionState> states = new List<CustomTransitionState>();
  23. public override UnityEngine.Object Target { get { return null; } }
  24. public CustomTransitions(params string[] stateNames)
  25. : base(stateNames)
  26. {
  27. }
  28. protected override void ApplyState(TransitionState state, bool instant)
  29. {
  30. state.StateObject.Invoke();
  31. }
  32. internal override void AddStateObject(string stateName)
  33. {
  34. var obj = new CustomTransitionState(stateName);
  35. this.states.Add(obj);
  36. }
  37. protected override IEnumerable<TransitionState> GetTransitionStates()
  38. {
  39. foreach (var s in states)
  40. yield return s;
  41. }
  42. internal override void SortStates(string[] sortedOrder)
  43. {
  44. base.SortStatesLogic(states, sortedOrder);
  45. }
  46. }
  47. }