Float1ControllerTransitionAsset.cs 4.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Animancer // https://kybernetik.com.au/animancer // Copyright 2022 Kybernetik //
  2. using System;
  3. using UnityEngine;
  4. namespace Animancer
  5. {
  6. /// <inheritdoc/>
  7. /// https://kybernetik.com.au/animancer/api/Animancer/Float1ControllerTransitionAsset
  8. [CreateAssetMenu(menuName = Strings.MenuPrefix + "Controller Transition/Float 1", order = Strings.AssetMenuOrder + 6)]
  9. [HelpURL(Strings.DocsURLs.APIDocumentation + "/" + nameof(Float1ControllerTransitionAsset))]
  10. public class Float1ControllerTransitionAsset : AnimancerTransitionAsset<Float1ControllerTransition>
  11. {
  12. /// <inheritdoc/>
  13. [Serializable]
  14. public new class UnShared :
  15. UnShared<Float1ControllerTransitionAsset, Float1ControllerTransition, Float1ControllerState>,
  16. Float1ControllerState.ITransition
  17. { }
  18. }
  19. /// <inheritdoc/>
  20. /// https://kybernetik.com.au/animancer/api/Animancer/Float1ControllerTransition
  21. [Serializable]
  22. public class Float1ControllerTransition : ControllerTransition<Float1ControllerState>,
  23. Float1ControllerState.ITransition, ICopyable<Float1ControllerTransition>
  24. {
  25. /************************************************************************************************************************/
  26. [SerializeField]
  27. private string _ParameterName;
  28. /// <summary>[<see cref="SerializeField"/>] The name that will be used to access <see cref="Parameter"/>.</summary>
  29. public ref string ParameterName => ref _ParameterName;
  30. /************************************************************************************************************************/
  31. /// <summary>Creates a new <see cref="Float1ControllerTransition"/>.</summary>
  32. public Float1ControllerTransition() { }
  33. /// <summary>Creates a new <see cref="Float1ControllerTransition"/> with the specified Animator Controller and parameter.</summary>
  34. public Float1ControllerTransition(RuntimeAnimatorController controller, string parameterName)
  35. {
  36. Controller = controller;
  37. _ParameterName = parameterName;
  38. }
  39. /************************************************************************************************************************/
  40. /// <inheritdoc/>
  41. public override Float1ControllerState CreateState()
  42. => State = new Float1ControllerState(Controller, _ParameterName, ActionsOnStop);
  43. /************************************************************************************************************************/
  44. /// <inheritdoc/>
  45. public virtual void CopyFrom(Float1ControllerTransition copyFrom)
  46. {
  47. CopyFrom((ControllerTransition<Float1ControllerState>)copyFrom);
  48. if (copyFrom == null)
  49. {
  50. _ParameterName = default;
  51. return;
  52. }
  53. _ParameterName = copyFrom._ParameterName;
  54. }
  55. /************************************************************************************************************************/
  56. #region Drawer
  57. #if UNITY_EDITOR
  58. /************************************************************************************************************************/
  59. /// <inheritdoc/>
  60. [UnityEditor.CustomPropertyDrawer(typeof(Float1ControllerTransition), true)]
  61. public class Drawer : ControllerTransition.Drawer
  62. {
  63. /************************************************************************************************************************/
  64. /// <summary>
  65. /// Creates a new <see cref="Drawer"/> and sets the
  66. /// <see cref="ControllerTransition.Drawer.Parameters"/>.
  67. /// </summary>
  68. public Drawer() : base(nameof(_ParameterName)) { }
  69. /************************************************************************************************************************/
  70. }
  71. /************************************************************************************************************************/
  72. #endif
  73. #endregion
  74. /************************************************************************************************************************/
  75. }
  76. }