AnimationTransitions.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using UnityEngine;
  6. #pragma warning disable 0649 // disable "never assigned" warnings
  7. namespace TheraBytes.BetterUi
  8. {
  9. [Serializable]
  10. public class AnimationTransitions : TransitionStateCollection<string>
  11. {
  12. [Serializable]
  13. public class AnimationTransitionState : TransitionState
  14. {
  15. public AnimationTransitionState(string name, string stateObject)
  16. : base(name, stateObject)
  17. { }
  18. }
  19. public override UnityEngine.Object Target { get { return target; } }
  20. [SerializeField]
  21. Animator target;
  22. [SerializeField]
  23. List<AnimationTransitionState> states = new List<AnimationTransitionState>();
  24. public AnimationTransitions(params string[] stateNames)
  25. : base(stateNames)
  26. {
  27. }
  28. protected override void ApplyState(TransitionState state, bool instant)
  29. {
  30. if (this.Target == null
  31. || !(this.target.isActiveAndEnabled)
  32. || this.target.runtimeAnimatorController == null
  33. || string.IsNullOrEmpty(state.StateObject))
  34. {
  35. return;
  36. }
  37. foreach (var s in states)
  38. {
  39. this.target.ResetTrigger(s.StateObject);
  40. }
  41. this.target.SetTrigger(state.StateObject);
  42. }
  43. internal override void AddStateObject(string stateName)
  44. {
  45. var obj = new AnimationTransitionState(stateName, null);
  46. this.states.Add(obj);
  47. }
  48. protected override IEnumerable<TransitionState> GetTransitionStates()
  49. {
  50. foreach (var s in states)
  51. yield return s;
  52. }
  53. internal override void SortStates(string[] sortedOrder)
  54. {
  55. base.SortStatesLogic(states, sortedOrder);
  56. }
  57. }
  58. }