Float3ControllerTransitionAsset.cs 5.4 KB

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