LitMotionSpriteRendererExtensions.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using UnityEngine;
  2. namespace LitMotion.Extensions
  3. {
  4. /// <summary>
  5. /// Provides binding extension methods for SpriteRenderer.
  6. /// </summary>
  7. public static class LitMotionSpriteRendererExtensions
  8. {
  9. /// <summary>
  10. /// Create a motion data and bind it to SpriteRenderer.color
  11. /// </summary>
  12. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  13. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  14. /// <param name="builder">This builder</param>
  15. /// <param name="transform"></param>
  16. /// <returns>Handle of the created motion data.</returns>
  17. public static MotionHandle BindToColor<TOptions, TAdapter>(this MotionBuilder<Color, TOptions, TAdapter> builder, SpriteRenderer spriteRenderer)
  18. where TOptions : unmanaged, IMotionOptions
  19. where TAdapter : unmanaged, IMotionAdapter<Color, TOptions>
  20. {
  21. Error.IsNull(spriteRenderer);
  22. return builder.BindWithState(spriteRenderer, static (x, m) =>
  23. {
  24. m.color = x;
  25. });
  26. }
  27. /// <summary>
  28. /// Create a motion data and bind it to SpriteRenderer.color.r
  29. /// </summary>
  30. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  31. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  32. /// <param name="builder">This builder</param>
  33. /// <param name="transform"></param>
  34. /// <returns>Handle of the created motion data.</returns>
  35. public static MotionHandle BindToColorR<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, SpriteRenderer spriteRenderer)
  36. where TOptions : unmanaged, IMotionOptions
  37. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  38. {
  39. Error.IsNull(spriteRenderer);
  40. return builder.BindWithState(spriteRenderer, static (x, m) =>
  41. {
  42. var c = m.color;
  43. c.r = x;
  44. m.color = c;
  45. });
  46. }
  47. /// <summary>
  48. /// Create a motion data and bind it to SpriteRenderer.color.g
  49. /// </summary>
  50. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  51. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  52. /// <param name="builder">This builder</param>
  53. /// <param name="transform"></param>
  54. /// <returns>Handle of the created motion data.</returns>
  55. public static MotionHandle BindToColorG<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, SpriteRenderer spriteRenderer)
  56. where TOptions : unmanaged, IMotionOptions
  57. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  58. {
  59. Error.IsNull(spriteRenderer);
  60. return builder.BindWithState(spriteRenderer, static (x, m) =>
  61. {
  62. var c = m.color;
  63. c.g = x;
  64. m.color = c;
  65. });
  66. }
  67. /// <summary>
  68. /// Create a motion data and bind it to SpriteRenderer.color.b
  69. /// </summary>
  70. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  71. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  72. /// <param name="builder">This builder</param>
  73. /// <param name="transform"></param>
  74. /// <returns>Handle of the created motion data.</returns>
  75. public static MotionHandle BindToColorB<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, SpriteRenderer spriteRenderer)
  76. where TOptions : unmanaged, IMotionOptions
  77. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  78. {
  79. Error.IsNull(spriteRenderer);
  80. return builder.BindWithState(spriteRenderer, static (x, m) =>
  81. {
  82. var c = m.color;
  83. c.b = x;
  84. m.color = c;
  85. });
  86. }
  87. /// <summary>
  88. /// Create a motion data and bind it to SpriteRenderer.color.a
  89. /// </summary>
  90. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  91. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  92. /// <param name="builder">This builder</param>
  93. /// <param name="transform"></param>
  94. /// <returns>Handle of the created motion data.</returns>
  95. public static MotionHandle BindToColorA<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, SpriteRenderer spriteRenderer)
  96. where TOptions : unmanaged, IMotionOptions
  97. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  98. {
  99. Error.IsNull(spriteRenderer);
  100. return builder.BindWithState(spriteRenderer, static (x, m) =>
  101. {
  102. var c = m.color;
  103. c.a = x;
  104. m.color = c;
  105. });
  106. }
  107. }
  108. }