Float2ControllerTransitionAsset.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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/Float2ControllerTransitionAsset
  8. [CreateAssetMenu(menuName = Strings.MenuPrefix + "Controller Transition/Float 2", order = Strings.AssetMenuOrder + 7)]
  9. [HelpURL(Strings.DocsURLs.APIDocumentation + "/" + nameof(Float2ControllerTransitionAsset))]
  10. public class Float2ControllerTransitionAsset : AnimancerTransitionAsset<Float2ControllerTransition>
  11. {
  12. /// <inheritdoc/>
  13. [Serializable]
  14. public new class UnShared :
  15. UnShared<Float2ControllerTransitionAsset, Float2ControllerTransition, Float2ControllerState>,
  16. Float2ControllerState.ITransition
  17. { }
  18. }
  19. /// <inheritdoc/>
  20. /// https://kybernetik.com.au/animancer/api/Animancer/Float2ControllerTransition
  21. [Serializable]
  22. public class Float2ControllerTransition : ControllerTransition<Float2ControllerState>,
  23. Float2ControllerState.ITransition, ICopyable<Float2ControllerTransition>
  24. {
  25. /************************************************************************************************************************/
  26. [SerializeField]
  27. private string _ParameterNameX;
  28. /// <summary>[<see cref="SerializeField"/>] The name that will be used to access <see cref="ParameterX"/>.</summary>
  29. public ref string ParameterNameX => ref _ParameterNameX;
  30. /************************************************************************************************************************/
  31. [SerializeField]
  32. private string _ParameterNameY;
  33. /// <summary>[<see cref="SerializeField"/>] The name that will be used to access <see cref="ParameterY"/>.</summary>
  34. public ref string ParameterNameY => ref _ParameterNameY;
  35. /************************************************************************************************************************/
  36. /// <summary>Creates a new <see cref="Float2ControllerTransition"/>.</summary>
  37. public Float2ControllerTransition() { }
  38. /// <summary>Creates a new <see cref="Float2ControllerTransition"/> with the specified Animator Controller and parameters.</summary>
  39. public Float2ControllerTransition(RuntimeAnimatorController controller, string parameterNameX, string parameterNameY)
  40. {
  41. Controller = controller;
  42. _ParameterNameX = parameterNameX;
  43. _ParameterNameY = parameterNameY;
  44. }
  45. /************************************************************************************************************************/
  46. /// <inheritdoc/>
  47. public override Float2ControllerState CreateState()
  48. => State = new Float2ControllerState(Controller, _ParameterNameX, _ParameterNameY, ActionsOnStop);
  49. /************************************************************************************************************************/
  50. /// <inheritdoc/>
  51. public virtual void CopyFrom(Float2ControllerTransition copyFrom)
  52. {
  53. CopyFrom((ControllerTransition<Float2ControllerState>)copyFrom);
  54. if (copyFrom == null)
  55. {
  56. _ParameterNameX = default;
  57. _ParameterNameY = default;
  58. return;
  59. }
  60. _ParameterNameX = copyFrom._ParameterNameX;
  61. _ParameterNameY = copyFrom._ParameterNameY;
  62. }
  63. /************************************************************************************************************************/
  64. #region Drawer
  65. #if UNITY_EDITOR
  66. /************************************************************************************************************************/
  67. /// <inheritdoc/>
  68. [UnityEditor.CustomPropertyDrawer(typeof(Float2ControllerTransition), true)]
  69. public class Drawer : ControllerTransition.Drawer
  70. {
  71. /************************************************************************************************************************/
  72. /// <summary>
  73. /// Creates a new <see cref="Drawer"/> and sets the
  74. /// <see cref="ControllerTransition.Drawer.Parameters"/>.
  75. /// </summary>
  76. public Drawer() : base(nameof(_ParameterNameX), nameof(_ParameterNameY)) { }
  77. /************************************************************************************************************************/
  78. }
  79. /************************************************************************************************************************/
  80. #endif
  81. #endregion
  82. /************************************************************************************************************************/
  83. }
  84. }