ObjectActivenessTransitions.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 ObjectActivenessTransitions : TransitionStateCollection<bool>
  11. {
  12. [Serializable]
  13. public class ActiveTransitionState : TransitionState
  14. {
  15. public ActiveTransitionState(string name, bool stateObject)
  16. : base(name, stateObject)
  17. { }
  18. }
  19. public override UnityEngine.Object Target { get { return target; } }
  20. [SerializeField]
  21. GameObject target;
  22. [SerializeField]
  23. List<ActiveTransitionState> states = new List<ActiveTransitionState>();
  24. public ObjectActivenessTransitions(params string[] stateNames)
  25. : base(stateNames)
  26. {
  27. }
  28. protected override void ApplyState(TransitionState state, bool instant)
  29. {
  30. if (this.Target == null)
  31. return;
  32. if (Application.isPlaying)
  33. {
  34. this.target.SetActive(state.StateObject);
  35. }
  36. //else
  37. //{
  38. // Debug.LogWarning("Active State Transitions cannot be previewed outside play mode.");
  39. //}
  40. }
  41. internal override void AddStateObject(string stateName)
  42. {
  43. var obj = new ActiveTransitionState(stateName, true);
  44. this.states.Add(obj);
  45. }
  46. protected override IEnumerable<TransitionState> GetTransitionStates()
  47. {
  48. foreach (var s in states)
  49. yield return s;
  50. }
  51. internal override void SortStates(string[] sortedOrder)
  52. {
  53. base.SortStatesLogic(states, sortedOrder);
  54. }
  55. }
  56. }