AnimationTimeAttribute.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //
  2. namespace Animancer.Units
  3. {
  4. /// <summary>[Editor-Conditional]
  5. /// Causes a float field to display using 3 fields: Normalized, Seconds, and Frames.
  6. /// </summary>
  7. /// <remarks>
  8. /// <strong>Documentation:</strong>
  9. /// <see href="https://kybernetik.com.au/animancer/docs/manual/transitions#time-fields">
  10. /// Time Fields</see>
  11. /// </remarks>
  12. /// https://kybernetik.com.au/animancer/api/Animancer.Units/AnimationTimeAttribute
  13. ///
  14. [System.Diagnostics.Conditional(Strings.UnityEditor)]
  15. public sealed class AnimationTimeAttribute : UnitsAttribute
  16. {
  17. /************************************************************************************************************************/
  18. /// <summary>A unit of measurement used by the <see cref="AnimationTimeAttribute"/>.</summary>
  19. public enum Units
  20. {
  21. /// <summary>A value of 1 represents the end of the animation.</summary>
  22. Normalized = 0,
  23. /// <summary>A value of 1 represents 1 second.</summary>
  24. Seconds = 1,
  25. /// <summary>A value of 1 represents 1 frame.</summary>
  26. Frames = 2,
  27. }
  28. /// <summary>An explanation of the suffixes used in fields drawn by this attribute.</summary>
  29. public const string Tooltip = "x = Normalized, s = Seconds, f = Frames";
  30. /// <summary>The <see cref="UnitsAttribute.Multipliers"/> used by instances of this attribute.</summary>
  31. private static new readonly float[] Multipliers = new float[3];// Calculated immediately before each use.
  32. /// <summary>The <see cref="UnitsAttribute.Suffixes"/> used by instances of this attribute.</summary>
  33. private static new readonly string[] Suffixes = new string[3] { "x", "s", "f" };
  34. /************************************************************************************************************************/
  35. /// <summary>Cretes a new <see cref="AnimationTimeAttribute"/>.</summary>
  36. public AnimationTimeAttribute(Units units)
  37. : base(Multipliers, Suffixes, (int)units)
  38. { }
  39. /************************************************************************************************************************/
  40. }
  41. }