SRMath.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591
  1. using System;
  2. using UnityEngine;
  3. public static class SRMath
  4. {
  5. public static float Ease(float from, float to, float t, SRMath.EaseType type)
  6. {
  7. switch (type)
  8. {
  9. case SRMath.EaseType.Linear:
  10. return SRMath.TweenFunctions.Linear(t, from, to, 1f);
  11. case SRMath.EaseType.QuadEaseOut:
  12. return SRMath.TweenFunctions.QuadEaseOut(t, from, to, 1f);
  13. case SRMath.EaseType.QuadEaseIn:
  14. return SRMath.TweenFunctions.QuadEaseIn(t, from, to, 1f);
  15. case SRMath.EaseType.QuadEaseInOut:
  16. return SRMath.TweenFunctions.QuadEaseInOut(t, from, to, 1f);
  17. case SRMath.EaseType.QuadEaseOutIn:
  18. return SRMath.TweenFunctions.QuadEaseOutIn(t, from, to, 1f);
  19. case SRMath.EaseType.ExpoEaseOut:
  20. return SRMath.TweenFunctions.ExpoEaseOut(t, from, to, 1f);
  21. case SRMath.EaseType.ExpoEaseIn:
  22. return SRMath.TweenFunctions.ExpoEaseIn(t, from, to, 1f);
  23. case SRMath.EaseType.ExpoEaseInOut:
  24. return SRMath.TweenFunctions.ExpoEaseInOut(t, from, to, 1f);
  25. case SRMath.EaseType.ExpoEaseOutIn:
  26. return SRMath.TweenFunctions.ExpoEaseOutIn(t, from, to, 1f);
  27. case SRMath.EaseType.CubicEaseOut:
  28. return SRMath.TweenFunctions.CubicEaseOut(t, from, to, 1f);
  29. case SRMath.EaseType.CubicEaseIn:
  30. return SRMath.TweenFunctions.CubicEaseIn(t, from, to, 1f);
  31. case SRMath.EaseType.CubicEaseInOut:
  32. return SRMath.TweenFunctions.CubicEaseInOut(t, from, to, 1f);
  33. case SRMath.EaseType.CubicEaseOutIn:
  34. return SRMath.TweenFunctions.CubicEaseOutIn(t, from, to, 1f);
  35. case SRMath.EaseType.QuartEaseOut:
  36. return SRMath.TweenFunctions.QuartEaseOut(t, from, to, 1f);
  37. case SRMath.EaseType.QuartEaseIn:
  38. return SRMath.TweenFunctions.QuartEaseIn(t, from, to, 1f);
  39. case SRMath.EaseType.QuartEaseInOut:
  40. return SRMath.TweenFunctions.QuartEaseInOut(t, from, to, 1f);
  41. case SRMath.EaseType.QuartEaseOutIn:
  42. return SRMath.TweenFunctions.QuartEaseOutIn(t, from, to, 1f);
  43. case SRMath.EaseType.QuintEaseOut:
  44. return SRMath.TweenFunctions.QuintEaseOut(t, from, to, 1f);
  45. case SRMath.EaseType.QuintEaseIn:
  46. return SRMath.TweenFunctions.QuintEaseIn(t, from, to, 1f);
  47. case SRMath.EaseType.QuintEaseInOut:
  48. return SRMath.TweenFunctions.QuintEaseInOut(t, from, to, 1f);
  49. case SRMath.EaseType.QuintEaseOutIn:
  50. return SRMath.TweenFunctions.QuintEaseOutIn(t, from, to, 1f);
  51. case SRMath.EaseType.CircEaseOut:
  52. return SRMath.TweenFunctions.CircEaseOut(t, from, to, 1f);
  53. case SRMath.EaseType.CircEaseIn:
  54. return SRMath.TweenFunctions.CircEaseIn(t, from, to, 1f);
  55. case SRMath.EaseType.CircEaseInOut:
  56. return SRMath.TweenFunctions.CircEaseInOut(t, from, to, 1f);
  57. case SRMath.EaseType.CircEaseOutIn:
  58. return SRMath.TweenFunctions.CircEaseOutIn(t, from, to, 1f);
  59. case SRMath.EaseType.SineEaseOut:
  60. return SRMath.TweenFunctions.SineEaseOut(t, from, to, 1f);
  61. case SRMath.EaseType.SineEaseIn:
  62. return SRMath.TweenFunctions.SineEaseIn(t, from, to, 1f);
  63. case SRMath.EaseType.SineEaseInOut:
  64. return SRMath.TweenFunctions.SineEaseInOut(t, from, to, 1f);
  65. case SRMath.EaseType.SineEaseOutIn:
  66. return SRMath.TweenFunctions.SineEaseOutIn(t, from, to, 1f);
  67. case SRMath.EaseType.ElasticEaseOut:
  68. return SRMath.TweenFunctions.ElasticEaseOut(t, from, to, 1f);
  69. case SRMath.EaseType.ElasticEaseIn:
  70. return SRMath.TweenFunctions.ElasticEaseIn(t, from, to, 1f);
  71. case SRMath.EaseType.ElasticEaseInOut:
  72. return SRMath.TweenFunctions.ElasticEaseInOut(t, from, to, 1f);
  73. case SRMath.EaseType.ElasticEaseOutIn:
  74. return SRMath.TweenFunctions.ElasticEaseOutIn(t, from, to, 1f);
  75. case SRMath.EaseType.BounceEaseOut:
  76. return SRMath.TweenFunctions.BounceEaseOut(t, from, to, 1f);
  77. case SRMath.EaseType.BounceEaseIn:
  78. return SRMath.TweenFunctions.BounceEaseIn(t, from, to, 1f);
  79. case SRMath.EaseType.BounceEaseInOut:
  80. return SRMath.TweenFunctions.BounceEaseInOut(t, from, to, 1f);
  81. case SRMath.EaseType.BounceEaseOutIn:
  82. return SRMath.TweenFunctions.BounceEaseOutIn(t, from, to, 1f);
  83. case SRMath.EaseType.BackEaseOut:
  84. return SRMath.TweenFunctions.BackEaseOut(t, from, to, 1f);
  85. case SRMath.EaseType.BackEaseIn:
  86. return SRMath.TweenFunctions.BackEaseIn(t, from, to, 1f);
  87. case SRMath.EaseType.BackEaseInOut:
  88. return SRMath.TweenFunctions.BackEaseInOut(t, from, to, 1f);
  89. case SRMath.EaseType.BackEaseOutIn:
  90. return SRMath.TweenFunctions.BackEaseOutIn(t, from, to, 1f);
  91. default:
  92. throw new ArgumentOutOfRangeException("type");
  93. }
  94. }
  95. public static float SpringLerp(float strength, float deltaTime)
  96. {
  97. int num = Mathf.RoundToInt(deltaTime * 1000f);
  98. float t = 0.001f * strength;
  99. float num2 = 0f;
  100. float b = 1f;
  101. for (int i = 0; i < num; i++)
  102. {
  103. num2 = Mathf.Lerp(num2, b, t);
  104. }
  105. return num2;
  106. }
  107. public static float SpringLerp(float from, float to, float strength, float deltaTime)
  108. {
  109. return Mathf.Lerp(from, to, SRMath.SpringLerp(strength, deltaTime));
  110. }
  111. public static Vector3 SpringLerp(Vector3 from, Vector3 to, float strength, float deltaTime)
  112. {
  113. return Vector3.Lerp(from, to, SRMath.SpringLerp(strength, deltaTime));
  114. }
  115. public static Quaternion SpringLerp(Quaternion from, Quaternion to, float strength, float deltaTime)
  116. {
  117. return Quaternion.Slerp(from, to, SRMath.SpringLerp(strength, deltaTime));
  118. }
  119. public static float SmoothClamp(float value, float min, float max, float scrollMax, SRMath.EaseType easeType = SRMath.EaseType.ExpoEaseOut)
  120. {
  121. if (value < min)
  122. {
  123. return value;
  124. }
  125. float num = Mathf.Clamp01((value - min) / (scrollMax - min));
  126. UnityEngine.Debug.Log(num);
  127. return Mathf.Clamp(min + Mathf.Lerp(value - min, max, SRMath.Ease(0f, 1f, num, easeType)), 0f, max);
  128. }
  129. public static float LerpUnclamped(float from, float to, float t)
  130. {
  131. return (1f - t) * from + t * to;
  132. }
  133. public static Vector3 LerpUnclamped(Vector3 from, Vector3 to, float t)
  134. {
  135. return new Vector3(SRMath.LerpUnclamped(from.x, to.x, t), SRMath.LerpUnclamped(from.y, to.y, t), SRMath.LerpUnclamped(from.z, to.z, t));
  136. }
  137. public static float FacingNormalized(Vector3 dir1, Vector3 dir2)
  138. {
  139. dir1.Normalize();
  140. dir2.Normalize();
  141. return Mathf.InverseLerp(-1f, 1f, Vector3.Dot(dir1, dir2));
  142. }
  143. public static float WrapAngle(float angle)
  144. {
  145. if (angle <= -180f)
  146. {
  147. angle += 360f;
  148. }
  149. else if (angle > 180f)
  150. {
  151. angle -= 360f;
  152. }
  153. return angle;
  154. }
  155. public static float NearestAngle(float to, float angle1, float angle2)
  156. {
  157. if (Mathf.Abs(Mathf.DeltaAngle(to, angle1)) > Mathf.Abs(Mathf.DeltaAngle(to, angle2)))
  158. {
  159. return angle2;
  160. }
  161. return angle1;
  162. }
  163. public static int Wrap(int max, int value)
  164. {
  165. if (max < 0)
  166. {
  167. throw new ArgumentOutOfRangeException("max", "max must be greater than 0");
  168. }
  169. while (value < 0)
  170. {
  171. value += max;
  172. }
  173. while (value >= max)
  174. {
  175. value -= max;
  176. }
  177. return value;
  178. }
  179. public static float Wrap(float max, float value)
  180. {
  181. while (value < 0f)
  182. {
  183. value += max;
  184. }
  185. while (value >= max)
  186. {
  187. value -= max;
  188. }
  189. return value;
  190. }
  191. public static float Average(float v1, float v2)
  192. {
  193. return (v1 + v2) * 0.5f;
  194. }
  195. public static float Angle(Vector2 direction)
  196. {
  197. float num = Vector3.Angle(Vector3.up, direction);
  198. if (Vector3.Cross(direction, Vector3.up).z > 0f)
  199. {
  200. num *= -1f;
  201. }
  202. return num;
  203. }
  204. private static class TweenFunctions
  205. {
  206. public static float Linear(float t, float b, float c, float d)
  207. {
  208. return c * t / d + b;
  209. }
  210. public static float ExpoEaseOut(float t, float b, float c, float d)
  211. {
  212. return (t != d) ? (c * (-Mathf.Pow(2f, -10f * t / d) + 1f) + b) : (b + c);
  213. }
  214. public static float ExpoEaseIn(float t, float b, float c, float d)
  215. {
  216. return (t != 0f) ? (c * Mathf.Pow(2f, 10f * (t / d - 1f)) + b) : b;
  217. }
  218. public static float ExpoEaseInOut(float t, float b, float c, float d)
  219. {
  220. if (t == 0f)
  221. {
  222. return b;
  223. }
  224. if (t == d)
  225. {
  226. return b + c;
  227. }
  228. if ((t /= d / 2f) < 1f)
  229. {
  230. return c / 2f * Mathf.Pow(2f, 10f * (t - 1f)) + b;
  231. }
  232. return c / 2f * (-Mathf.Pow(2f, -10f * (t -= 1f)) + 2f) + b;
  233. }
  234. public static float ExpoEaseOutIn(float t, float b, float c, float d)
  235. {
  236. if (t < d / 2f)
  237. {
  238. return SRMath.TweenFunctions.ExpoEaseOut(t * 2f, b, c / 2f, d);
  239. }
  240. return SRMath.TweenFunctions.ExpoEaseIn(t * 2f - d, b + c / 2f, c / 2f, d);
  241. }
  242. public static float CircEaseOut(float t, float b, float c, float d)
  243. {
  244. return c * Mathf.Sqrt(1f - (t = t / d - 1f) * t) + b;
  245. }
  246. public static float CircEaseIn(float t, float b, float c, float d)
  247. {
  248. return -c * (Mathf.Sqrt(1f - (t /= d) * t) - 1f) + b;
  249. }
  250. public static float CircEaseInOut(float t, float b, float c, float d)
  251. {
  252. if ((t /= d / 2f) < 1f)
  253. {
  254. return -c / 2f * (Mathf.Sqrt(1f - t * t) - 1f) + b;
  255. }
  256. return c / 2f * (Mathf.Sqrt(1f - (t -= 2f) * t) + 1f) + b;
  257. }
  258. public static float CircEaseOutIn(float t, float b, float c, float d)
  259. {
  260. if (t < d / 2f)
  261. {
  262. return SRMath.TweenFunctions.CircEaseOut(t * 2f, b, c / 2f, d);
  263. }
  264. return SRMath.TweenFunctions.CircEaseIn(t * 2f - d, b + c / 2f, c / 2f, d);
  265. }
  266. public static float QuadEaseOut(float t, float b, float c, float d)
  267. {
  268. return -c * (t /= d) * (t - 2f) + b;
  269. }
  270. public static float QuadEaseIn(float t, float b, float c, float d)
  271. {
  272. return c * (t /= d) * t + b;
  273. }
  274. public static float QuadEaseInOut(float t, float b, float c, float d)
  275. {
  276. if ((t /= d / 2f) < 1f)
  277. {
  278. return c / 2f * t * t + b;
  279. }
  280. return -c / 2f * ((t -= 1f) * (t - 2f) - 1f) + b;
  281. }
  282. public static float QuadEaseOutIn(float t, float b, float c, float d)
  283. {
  284. if (t < d / 2f)
  285. {
  286. return SRMath.TweenFunctions.QuadEaseOut(t * 2f, b, c / 2f, d);
  287. }
  288. return SRMath.TweenFunctions.QuadEaseIn(t * 2f - d, b + c / 2f, c / 2f, d);
  289. }
  290. public static float SineEaseOut(float t, float b, float c, float d)
  291. {
  292. return c * Mathf.Sin(t / d * 1.57079637f) + b;
  293. }
  294. public static float SineEaseIn(float t, float b, float c, float d)
  295. {
  296. return -c * Mathf.Cos(t / d * 1.57079637f) + c + b;
  297. }
  298. public static float SineEaseInOut(float t, float b, float c, float d)
  299. {
  300. if ((t /= d / 2f) < 1f)
  301. {
  302. return c / 2f * Mathf.Sin(3.14159274f * t / 2f) + b;
  303. }
  304. return -c / 2f * (Mathf.Cos(3.14159274f * (t -= 1f) / 2f) - 2f) + b;
  305. }
  306. public static float SineEaseOutIn(float t, float b, float c, float d)
  307. {
  308. if (t < d / 2f)
  309. {
  310. return SRMath.TweenFunctions.SineEaseOut(t * 2f, b, c / 2f, d);
  311. }
  312. return SRMath.TweenFunctions.SineEaseIn(t * 2f - d, b + c / 2f, c / 2f, d);
  313. }
  314. public static float CubicEaseOut(float t, float b, float c, float d)
  315. {
  316. return c * ((t = t / d - 1f) * t * t + 1f) + b;
  317. }
  318. public static float CubicEaseIn(float t, float b, float c, float d)
  319. {
  320. return c * (t /= d) * t * t + b;
  321. }
  322. public static float CubicEaseInOut(float t, float b, float c, float d)
  323. {
  324. if ((t /= d / 2f) < 1f)
  325. {
  326. return c / 2f * t * t * t + b;
  327. }
  328. return c / 2f * ((t -= 2f) * t * t + 2f) + b;
  329. }
  330. public static float CubicEaseOutIn(float t, float b, float c, float d)
  331. {
  332. if (t < d / 2f)
  333. {
  334. return SRMath.TweenFunctions.CubicEaseOut(t * 2f, b, c / 2f, d);
  335. }
  336. return SRMath.TweenFunctions.CubicEaseIn(t * 2f - d, b + c / 2f, c / 2f, d);
  337. }
  338. public static float QuartEaseOut(float t, float b, float c, float d)
  339. {
  340. return -c * ((t = t / d - 1f) * t * t * t - 1f) + b;
  341. }
  342. public static float QuartEaseIn(float t, float b, float c, float d)
  343. {
  344. return c * (t /= d) * t * t * t + b;
  345. }
  346. public static float QuartEaseInOut(float t, float b, float c, float d)
  347. {
  348. if ((t /= d / 2f) < 1f)
  349. {
  350. return c / 2f * t * t * t * t + b;
  351. }
  352. return -c / 2f * ((t -= 2f) * t * t * t - 2f) + b;
  353. }
  354. public static float QuartEaseOutIn(float t, float b, float c, float d)
  355. {
  356. if (t < d / 2f)
  357. {
  358. return SRMath.TweenFunctions.QuartEaseOut(t * 2f, b, c / 2f, d);
  359. }
  360. return SRMath.TweenFunctions.QuartEaseIn(t * 2f - d, b + c / 2f, c / 2f, d);
  361. }
  362. public static float QuintEaseOut(float t, float b, float c, float d)
  363. {
  364. return c * ((t = t / d - 1f) * t * t * t * t + 1f) + b;
  365. }
  366. public static float QuintEaseIn(float t, float b, float c, float d)
  367. {
  368. return c * (t /= d) * t * t * t * t + b;
  369. }
  370. public static float QuintEaseInOut(float t, float b, float c, float d)
  371. {
  372. if ((t /= d / 2f) < 1f)
  373. {
  374. return c / 2f * t * t * t * t * t + b;
  375. }
  376. return c / 2f * ((t -= 2f) * t * t * t * t + 2f) + b;
  377. }
  378. public static float QuintEaseOutIn(float t, float b, float c, float d)
  379. {
  380. if (t < d / 2f)
  381. {
  382. return SRMath.TweenFunctions.QuintEaseOut(t * 2f, b, c / 2f, d);
  383. }
  384. return SRMath.TweenFunctions.QuintEaseIn(t * 2f - d, b + c / 2f, c / 2f, d);
  385. }
  386. public static float ElasticEaseOut(float t, float b, float c, float d)
  387. {
  388. if ((t /= d) == 1f)
  389. {
  390. return b + c;
  391. }
  392. float num = d * 0.3f;
  393. float num2 = num / 4f;
  394. return c * Mathf.Pow(2f, -10f * t) * Mathf.Sin((t * d - num2) * 6.28318548f / num) + c + b;
  395. }
  396. public static float ElasticEaseIn(float t, float b, float c, float d)
  397. {
  398. if ((t /= d) == 1f)
  399. {
  400. return b + c;
  401. }
  402. float num = d * 0.3f;
  403. float num2 = num / 4f;
  404. return -(c * Mathf.Pow(2f, 10f * (t -= 1f)) * Mathf.Sin((t * d - num2) * 6.28318548f / num)) + b;
  405. }
  406. public static float ElasticEaseInOut(float t, float b, float c, float d)
  407. {
  408. if ((t /= d / 2f) == 2f)
  409. {
  410. return b + c;
  411. }
  412. float num = d * 0.450000018f;
  413. float num2 = num / 4f;
  414. if (t < 1f)
  415. {
  416. return -0.5f * (c * Mathf.Pow(2f, 10f * (t -= 1f)) * Mathf.Sin((t * d - num2) * 6.28318548f / num)) + b;
  417. }
  418. return c * Mathf.Pow(2f, -10f * (t -= 1f)) * Mathf.Sin((t * d - num2) * 6.28318548f / num) * 0.5f + c + b;
  419. }
  420. public static float ElasticEaseOutIn(float t, float b, float c, float d)
  421. {
  422. if (t < d / 2f)
  423. {
  424. return SRMath.TweenFunctions.ElasticEaseOut(t * 2f, b, c / 2f, d);
  425. }
  426. return SRMath.TweenFunctions.ElasticEaseIn(t * 2f - d, b + c / 2f, c / 2f, d);
  427. }
  428. public static float BounceEaseOut(float t, float b, float c, float d)
  429. {
  430. if ((t /= d) < 0.363636374f)
  431. {
  432. return c * (7.5625f * t * t) + b;
  433. }
  434. if ((double)t < 0.72727272727272729)
  435. {
  436. return c * (7.5625f * (t -= 0.545454562f) * t + 0.75f) + b;
  437. }
  438. if ((double)t < 0.90909090909090906)
  439. {
  440. return c * (7.5625f * (t -= 0.8181818f) * t + 0.9375f) + b;
  441. }
  442. return c * (7.5625f * (t -= 0.954545438f) * t + 0.984375f) + b;
  443. }
  444. public static float BounceEaseIn(float t, float b, float c, float d)
  445. {
  446. return c - SRMath.TweenFunctions.BounceEaseOut(d - t, 0f, c, d) + b;
  447. }
  448. public static float BounceEaseInOut(float t, float b, float c, float d)
  449. {
  450. if (t < d / 2f)
  451. {
  452. return SRMath.TweenFunctions.BounceEaseIn(t * 2f, 0f, c, d) * 0.5f + b;
  453. }
  454. return SRMath.TweenFunctions.BounceEaseOut(t * 2f - d, 0f, c, d) * 0.5f + c * 0.5f + b;
  455. }
  456. public static float BounceEaseOutIn(float t, float b, float c, float d)
  457. {
  458. if (t < d / 2f)
  459. {
  460. return SRMath.TweenFunctions.BounceEaseOut(t * 2f, b, c / 2f, d);
  461. }
  462. return SRMath.TweenFunctions.BounceEaseIn(t * 2f - d, b + c / 2f, c / 2f, d);
  463. }
  464. public static float BackEaseOut(float t, float b, float c, float d)
  465. {
  466. return c * ((t = t / d - 1f) * t * (2.70158f * t + 1.70158f) + 1f) + b;
  467. }
  468. public static float BackEaseIn(float t, float b, float c, float d)
  469. {
  470. return c * (t /= d) * t * (2.70158f * t - 1.70158f) + b;
  471. }
  472. public static float BackEaseInOut(float t, float b, float c, float d)
  473. {
  474. float num = 1.70158f;
  475. if ((t /= d / 2f) < 1f)
  476. {
  477. return c / 2f * (t * t * (((num *= 1.525f) + 1f) * t - num)) + b;
  478. }
  479. return c / 2f * ((t -= 2f) * t * (((num *= 1.525f) + 1f) * t + num) + 2f) + b;
  480. }
  481. public static float BackEaseOutIn(float t, float b, float c, float d)
  482. {
  483. if (t < d / 2f)
  484. {
  485. return SRMath.TweenFunctions.BackEaseOut(t * 2f, b, c / 2f, d);
  486. }
  487. return SRMath.TweenFunctions.BackEaseIn(t * 2f - d, b + c / 2f, c / 2f, d);
  488. }
  489. }
  490. public enum EaseType
  491. {
  492. Linear,
  493. QuadEaseOut,
  494. QuadEaseIn,
  495. QuadEaseInOut,
  496. QuadEaseOutIn,
  497. ExpoEaseOut,
  498. ExpoEaseIn,
  499. ExpoEaseInOut,
  500. ExpoEaseOutIn,
  501. CubicEaseOut,
  502. CubicEaseIn,
  503. CubicEaseInOut,
  504. CubicEaseOutIn,
  505. QuartEaseOut,
  506. QuartEaseIn,
  507. QuartEaseInOut,
  508. QuartEaseOutIn,
  509. QuintEaseOut,
  510. QuintEaseIn,
  511. QuintEaseInOut,
  512. QuintEaseOutIn,
  513. CircEaseOut,
  514. CircEaseIn,
  515. CircEaseInOut,
  516. CircEaseOutIn,
  517. SineEaseOut,
  518. SineEaseIn,
  519. SineEaseInOut,
  520. SineEaseOutIn,
  521. ElasticEaseOut,
  522. ElasticEaseIn,
  523. ElasticEaseInOut,
  524. ElasticEaseOutIn,
  525. BounceEaseOut,
  526. BounceEaseIn,
  527. BounceEaseInOut,
  528. BounceEaseOutIn,
  529. BackEaseOut,
  530. BackEaseIn,
  531. BackEaseInOut,
  532. BackEaseOutIn
  533. }
  534. }