LitMotionTransformExtensions.cs 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789
  1. using UnityEngine;
  2. namespace LitMotion.Extensions
  3. {
  4. /// <summary>
  5. /// Provides binding extension methods for Transform.
  6. /// </summary>
  7. public static class LitMotionTransformExtensions
  8. {
  9. /// <summary>
  10. /// Create a motion data and bind it to Transform.position
  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 BindToPosition<TOptions, TAdapter>(this MotionBuilder<Vector3, TOptions, TAdapter> builder, Transform transform)
  18. where TOptions : unmanaged, IMotionOptions
  19. where TAdapter : unmanaged, IMotionAdapter<Vector3, TOptions>
  20. {
  21. Error.IsNull(transform);
  22. return builder.BindWithState(transform, static (x, t) =>
  23. {
  24. t.position = x;
  25. });
  26. }
  27. /// <summary>
  28. /// Create a motion data and bind it to Transform.position.x
  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 BindToPositionX<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  36. where TOptions : unmanaged, IMotionOptions
  37. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  38. {
  39. Error.IsNull(transform);
  40. return builder.BindWithState(transform, static (x, t) =>
  41. {
  42. var p = t.position;
  43. p.x = x;
  44. t.position = p;
  45. });
  46. }
  47. /// <summary>
  48. /// Create a motion data and bind it to Transform.position.y
  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 BindToPositionY<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  56. where TOptions : unmanaged, IMotionOptions
  57. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  58. {
  59. Error.IsNull(transform);
  60. return builder.BindWithState(transform, static (x, t) =>
  61. {
  62. var p = t.position;
  63. p.y = x;
  64. t.position = p;
  65. });
  66. }
  67. /// <summary>
  68. /// Create a motion data and bind it to Transform.position.z
  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 BindToPositionZ<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  76. where TOptions : unmanaged, IMotionOptions
  77. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  78. {
  79. Error.IsNull(transform);
  80. return builder.BindWithState(transform, static (x, t) =>
  81. {
  82. var p = t.position;
  83. p.z = x;
  84. t.position = p;
  85. });
  86. }
  87. /// <summary>
  88. /// Create a motion data and bind it to Transform.position.xy
  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 BindToPositionXY<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  96. where TOptions : unmanaged, IMotionOptions
  97. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  98. {
  99. Error.IsNull(transform);
  100. return builder.BindWithState(transform, static (x, t) =>
  101. {
  102. var p = t.position;
  103. p.x = x.x;
  104. p.y = x.y;
  105. t.position = p;
  106. });
  107. }
  108. /// <summary>
  109. /// Create a motion data and bind it to Transform.position.xz
  110. /// </summary>
  111. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  112. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  113. /// <param name="builder">This builder</param>
  114. /// <param name="transform"></param>
  115. /// <returns>Handle of the created motion data.</returns>
  116. public static MotionHandle BindToPositionXZ<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  117. where TOptions : unmanaged, IMotionOptions
  118. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  119. {
  120. Error.IsNull(transform);
  121. return builder.BindWithState(transform, static (x, t) =>
  122. {
  123. var p = t.position;
  124. p.x = x.x;
  125. p.z = x.y;
  126. t.position = p;
  127. });
  128. }
  129. /// <summary>
  130. /// Create a motion data and bind it to Transform.position.yz
  131. /// </summary>
  132. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  133. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  134. /// <param name="builder">This builder</param>
  135. /// <param name="transform"></param>
  136. /// <returns>Handle of the created motion data.</returns>
  137. public static MotionHandle BindToPositionYZ<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  138. where TOptions : unmanaged, IMotionOptions
  139. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  140. {
  141. Error.IsNull(transform);
  142. return builder.BindWithState(transform, static (x, t) =>
  143. {
  144. var p = t.position;
  145. p.y = x.x;
  146. p.z = x.y;
  147. t.position = p;
  148. });
  149. }
  150. /// <summary>
  151. /// Create a motion data and bind it to Transform.localPosition
  152. /// </summary>
  153. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  154. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  155. /// <param name="builder">This builder</param>
  156. /// <param name="transform"></param>
  157. /// <returns>Handle of the created motion data.</returns>
  158. public static MotionHandle BindToLocalPosition<TOptions, TAdapter>(this MotionBuilder<Vector3, TOptions, TAdapter> builder, Transform transform)
  159. where TOptions : unmanaged, IMotionOptions
  160. where TAdapter : unmanaged, IMotionAdapter<Vector3, TOptions>
  161. {
  162. Error.IsNull(transform);
  163. return builder.BindWithState(transform, static (x, t) =>
  164. {
  165. t.localPosition = x;
  166. });
  167. }
  168. /// <summary>
  169. /// Create a motion data and bind it to Transform.localPosition.x
  170. /// </summary>
  171. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  172. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  173. /// <param name="builder">This builder</param>
  174. /// <param name="transform"></param>
  175. /// <returns>Handle of the created motion data.</returns>
  176. public static MotionHandle BindToLocalPositionX<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  177. where TOptions : unmanaged, IMotionOptions
  178. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  179. {
  180. Error.IsNull(transform);
  181. return builder.BindWithState(transform, static (x, t) =>
  182. {
  183. var p = t.localPosition;
  184. p.x = x;
  185. t.localPosition = p;
  186. });
  187. }
  188. /// <summary>
  189. /// Create a motion data and bind it to Transform.localPosition.y
  190. /// </summary>
  191. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  192. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  193. /// <param name="builder">This builder</param>
  194. /// <param name="transform"></param>
  195. /// <returns>Handle of the created motion data.</returns>
  196. public static MotionHandle BindToLocalPositionY<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  197. where TOptions : unmanaged, IMotionOptions
  198. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  199. {
  200. Error.IsNull(transform);
  201. return builder.BindWithState(transform, static (x, t) =>
  202. {
  203. var p = t.localPosition;
  204. p.y = x;
  205. t.localPosition = p;
  206. });
  207. }
  208. /// <summary>
  209. /// Create a motion data and bind it to Transform.localPosition.z
  210. /// </summary>
  211. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  212. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  213. /// <param name="builder">This builder</param>
  214. /// <param name="transform"></param>
  215. /// <returns>Handle of the created motion data.</returns>
  216. public static MotionHandle BindToLocalPositionZ<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  217. where TOptions : unmanaged, IMotionOptions
  218. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  219. {
  220. Error.IsNull(transform);
  221. return builder.BindWithState(transform, static (x, t) =>
  222. {
  223. var p = t.localPosition;
  224. p.z = x;
  225. t.localPosition = p;
  226. });
  227. }
  228. /// <summary>
  229. /// Create a motion data and bind it to Transform.localPosition.xy
  230. /// </summary>
  231. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  232. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  233. /// <param name="builder">This builder</param>
  234. /// <param name="transform"></param>
  235. /// <returns>Handle of the created motion data.</returns>
  236. public static MotionHandle BindToLocalPositionXY<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  237. where TOptions : unmanaged, IMotionOptions
  238. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  239. {
  240. Error.IsNull(transform);
  241. return builder.BindWithState(transform, static (x, t) =>
  242. {
  243. var p = t.localPosition;
  244. p.x = x.x;
  245. p.y = x.y;
  246. t.localPosition = p;
  247. });
  248. }
  249. /// <summary>
  250. /// Create a motion data and bind it to Transform.localPosition.xz
  251. /// </summary>
  252. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  253. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  254. /// <param name="builder">This builder</param>
  255. /// <param name="transform"></param>
  256. /// <returns>Handle of the created motion data.</returns>
  257. public static MotionHandle BindToLocalPositionXZ<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  258. where TOptions : unmanaged, IMotionOptions
  259. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  260. {
  261. Error.IsNull(transform);
  262. return builder.BindWithState(transform, static (x, t) =>
  263. {
  264. var p = t.localPosition;
  265. p.x = x.x;
  266. p.z = x.y;
  267. t.localPosition = p;
  268. });
  269. }
  270. /// <summary>
  271. /// Create a motion data and bind it to Transform.localPosition.yz
  272. /// </summary>
  273. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  274. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  275. /// <param name="builder">This builder</param>
  276. /// <param name="transform"></param>
  277. /// <returns>Handle of the created motion data.</returns>
  278. public static MotionHandle BindToLocalPositionYZ<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  279. where TOptions : unmanaged, IMotionOptions
  280. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  281. {
  282. Error.IsNull(transform);
  283. return builder.BindWithState(transform, static (x, t) =>
  284. {
  285. var p = t.localPosition;
  286. p.y = x.x;
  287. p.z = x.y;
  288. t.localPosition = p;
  289. });
  290. }
  291. /// <summary>
  292. /// Create a motion data and bind it to Transform.rotation
  293. /// </summary>
  294. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  295. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  296. /// <param name="builder">This builder</param>
  297. /// <param name="transform"></param>
  298. /// <returns>Handle of the created motion data.</returns>
  299. public static MotionHandle BindToRotation<TOptions, TAdapter>(this MotionBuilder<Quaternion, TOptions, TAdapter> builder, Transform transform)
  300. where TOptions : unmanaged, IMotionOptions
  301. where TAdapter : unmanaged, IMotionAdapter<Quaternion, TOptions>
  302. {
  303. Error.IsNull(transform);
  304. return builder.BindWithState(transform, static (x, t) =>
  305. {
  306. t.rotation = x;
  307. });
  308. }
  309. /// <summary>
  310. /// Create a motion data and bind it to Transform.localRotation
  311. /// </summary>
  312. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  313. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  314. /// <param name="builder">This builder</param>
  315. /// <param name="transform"></param>
  316. /// <returns>Handle of the created motion data.</returns>
  317. public static MotionHandle BindToLocalRotation<TOptions, TAdapter>(this MotionBuilder<Quaternion, TOptions, TAdapter> builder, Transform transform)
  318. where TOptions : unmanaged, IMotionOptions
  319. where TAdapter : unmanaged, IMotionAdapter<Quaternion, TOptions>
  320. {
  321. Error.IsNull(transform);
  322. return builder.BindWithState(transform, static (x, t) =>
  323. {
  324. t.localRotation = x;
  325. });
  326. }
  327. /// <summary>
  328. /// Create a motion data and bind it to Transform.eulerAngles
  329. /// </summary>
  330. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  331. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  332. /// <param name="builder">This builder</param>
  333. /// <param name="transform"></param>
  334. /// <returns>Handle of the created motion data.</returns>
  335. public static MotionHandle BindToEulerAngles<TOptions, TAdapter>(this MotionBuilder<Vector3, TOptions, TAdapter> builder, Transform transform)
  336. where TOptions : unmanaged, IMotionOptions
  337. where TAdapter : unmanaged, IMotionAdapter<Vector3, TOptions>
  338. {
  339. Error.IsNull(transform);
  340. return builder.BindWithState(transform, static (x, t) =>
  341. {
  342. t.eulerAngles = x;
  343. });
  344. }
  345. /// <summary>
  346. /// Create a motion data and bind it to Transform.eulerAngles.x
  347. /// </summary>
  348. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  349. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  350. /// <param name="builder">This builder</param>
  351. /// <param name="transform"></param>
  352. /// <returns>Handle of the created motion data.</returns>
  353. public static MotionHandle BindToEulerAnglesX<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  354. where TOptions : unmanaged, IMotionOptions
  355. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  356. {
  357. Error.IsNull(transform);
  358. return builder.BindWithState(transform, static (x, t) =>
  359. {
  360. var p = t.eulerAngles;
  361. p.x = x;
  362. t.eulerAngles = p;
  363. });
  364. }
  365. /// <summary>
  366. /// Create a motion data and bind it to Transform.eulerAngles.y
  367. /// </summary>
  368. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  369. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  370. /// <param name="builder">This builder</param>
  371. /// <param name="transform"></param>
  372. /// <returns>Handle of the created motion data.</returns>
  373. public static MotionHandle BindToEulerAnglesY<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  374. where TOptions : unmanaged, IMotionOptions
  375. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  376. {
  377. Error.IsNull(transform);
  378. return builder.BindWithState(transform, static (x, t) =>
  379. {
  380. var p = t.eulerAngles;
  381. p.y = x;
  382. t.eulerAngles = p;
  383. });
  384. }
  385. /// <summary>
  386. /// Create a motion data and bind it to Transform.eulerAngles.z
  387. /// </summary>
  388. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  389. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  390. /// <param name="builder">This builder</param>
  391. /// <param name="transform"></param>
  392. /// <returns>Handle of the created motion data.</returns>
  393. public static MotionHandle BindToEulerAnglesZ<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  394. where TOptions : unmanaged, IMotionOptions
  395. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  396. {
  397. Error.IsNull(transform);
  398. return builder.BindWithState(transform, static (x, t) =>
  399. {
  400. var p = t.eulerAngles;
  401. p.z = x;
  402. t.eulerAngles = p;
  403. });
  404. }
  405. /// <summary>
  406. /// Create a motion data and bind it to Transform.eulerAngles.xy
  407. /// </summary>
  408. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  409. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  410. /// <param name="builder">This builder</param>
  411. /// <param name="transform"></param>
  412. /// <returns>Handle of the created motion data.</returns>
  413. public static MotionHandle BindToEulerAnglesXY<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  414. where TOptions : unmanaged, IMotionOptions
  415. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  416. {
  417. Error.IsNull(transform);
  418. return builder.BindWithState(transform, static (x, t) =>
  419. {
  420. var p = t.eulerAngles;
  421. p.x = x.x;
  422. p.y = x.y;
  423. t.eulerAngles = p;
  424. });
  425. }
  426. /// <summary>
  427. /// Create a motion data and bind it to Transform.eulerAngles.xz
  428. /// </summary>
  429. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  430. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  431. /// <param name="builder">This builder</param>
  432. /// <param name="transform"></param>
  433. /// <returns>Handle of the created motion data.</returns>
  434. public static MotionHandle BindToEulerAnglesXZ<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  435. where TOptions : unmanaged, IMotionOptions
  436. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  437. {
  438. Error.IsNull(transform);
  439. return builder.BindWithState(transform, static (x, t) =>
  440. {
  441. var p = t.eulerAngles;
  442. p.x = x.x;
  443. p.z = x.y;
  444. t.eulerAngles = p;
  445. });
  446. }
  447. /// <summary>
  448. /// Create a motion data and bind it to Transform.eulerAngles.yz
  449. /// </summary>
  450. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  451. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  452. /// <param name="builder">This builder</param>
  453. /// <param name="transform"></param>
  454. /// <returns>Handle of the created motion data.</returns>
  455. public static MotionHandle BindToEulerAnglesYZ<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  456. where TOptions : unmanaged, IMotionOptions
  457. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  458. {
  459. Error.IsNull(transform);
  460. return builder.BindWithState(transform, static (x, t) =>
  461. {
  462. var p = t.eulerAngles;
  463. p.y = x.x;
  464. p.z = x.y;
  465. t.eulerAngles = p;
  466. });
  467. }
  468. /// <summary>
  469. /// Create a motion data and bind it to Transform.localEulerAngles
  470. /// </summary>
  471. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  472. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  473. /// <param name="builder">This builder</param>
  474. /// <param name="transform"></param>
  475. /// <returns>Handle of the created motion data.</returns>
  476. public static MotionHandle BindToLocalEulerAngles<TOptions, TAdapter>(this MotionBuilder<Vector3, TOptions, TAdapter> builder, Transform transform)
  477. where TOptions : unmanaged, IMotionOptions
  478. where TAdapter : unmanaged, IMotionAdapter<Vector3, TOptions>
  479. {
  480. Error.IsNull(transform);
  481. return builder.BindWithState(transform, static (x, t) =>
  482. {
  483. t.localEulerAngles = x;
  484. });
  485. }
  486. /// <summary>
  487. /// Create a motion data and bind it to Transform.localEulerAngles.x
  488. /// </summary>
  489. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  490. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  491. /// <param name="builder">This builder</param>
  492. /// <param name="transform"></param>
  493. /// <returns>Handle of the created motion data.</returns>
  494. public static MotionHandle BindToLocalEulerAnglesX<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  495. where TOptions : unmanaged, IMotionOptions
  496. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  497. {
  498. Error.IsNull(transform);
  499. return builder.BindWithState(transform, static (x, t) =>
  500. {
  501. var p = t.localEulerAngles;
  502. p.x = x;
  503. t.localEulerAngles = p;
  504. });
  505. }
  506. /// <summary>
  507. /// Create a motion data and bind it to Transform.localEulerAngles.y
  508. /// </summary>
  509. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  510. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  511. /// <param name="builder">This builder</param>
  512. /// <param name="transform"></param>
  513. /// <returns>Handle of the created motion data.</returns>
  514. public static MotionHandle BindToLocalEulerAnglesY<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  515. where TOptions : unmanaged, IMotionOptions
  516. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  517. {
  518. Error.IsNull(transform);
  519. return builder.BindWithState(transform, static (x, t) =>
  520. {
  521. var p = t.localEulerAngles;
  522. p.y = x;
  523. t.localEulerAngles = p;
  524. });
  525. }
  526. /// <summary>
  527. /// Create a motion data and bind it to Transform.localEulerAngles.z
  528. /// </summary>
  529. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  530. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  531. /// <param name="builder">This builder</param>
  532. /// <param name="transform"></param>
  533. /// <returns>Handle of the created motion data.</returns>
  534. public static MotionHandle BindToLocalEulerAnglesZ<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  535. where TOptions : unmanaged, IMotionOptions
  536. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  537. {
  538. Error.IsNull(transform);
  539. return builder.BindWithState(transform, static (x, t) =>
  540. {
  541. var p = t.localEulerAngles;
  542. p.z = x;
  543. t.localEulerAngles = p;
  544. });
  545. }
  546. /// <summary>
  547. /// Create a motion data and bind it to Transform.localEulerAngles.xy
  548. /// </summary>
  549. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  550. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  551. /// <param name="builder">This builder</param>
  552. /// <param name="transform"></param>
  553. /// <returns>Handle of the created motion data.</returns>
  554. public static MotionHandle BindToLocalEulerAnglesXY<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  555. where TOptions : unmanaged, IMotionOptions
  556. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  557. {
  558. Error.IsNull(transform);
  559. return builder.BindWithState(transform, static (x, t) =>
  560. {
  561. var p = t.localEulerAngles;
  562. p.x = x.x;
  563. p.y = x.y;
  564. t.localEulerAngles = p;
  565. });
  566. }
  567. /// <summary>
  568. /// Create a motion data and bind it to Transform.localEulerAngles.xz
  569. /// </summary>
  570. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  571. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  572. /// <param name="builder">This builder</param>
  573. /// <param name="transform"></param>
  574. /// <returns>Handle of the created motion data.</returns>
  575. public static MotionHandle BindToLocalEulerAnglesXZ<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  576. where TOptions : unmanaged, IMotionOptions
  577. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  578. {
  579. Error.IsNull(transform);
  580. return builder.BindWithState(transform, static (x, t) =>
  581. {
  582. var p = t.localEulerAngles;
  583. p.x = x.x;
  584. p.z = x.y;
  585. t.localEulerAngles = p;
  586. });
  587. }
  588. /// <summary>
  589. /// Create a motion data and bind it to Transform.localEulerAngles.yz
  590. /// </summary>
  591. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  592. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  593. /// <param name="builder">This builder</param>
  594. /// <param name="transform"></param>
  595. /// <returns>Handle of the created motion data.</returns>
  596. public static MotionHandle BindToLocalEulerAnglesYZ<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  597. where TOptions : unmanaged, IMotionOptions
  598. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  599. {
  600. Error.IsNull(transform);
  601. return builder.BindWithState(transform, static (x, t) =>
  602. {
  603. var p = t.localEulerAngles;
  604. p.y = x.x;
  605. p.z = x.y;
  606. t.localEulerAngles = p;
  607. });
  608. }
  609. /// <summary>
  610. /// Create a motion data and bind it to Transform.localScale
  611. /// </summary>
  612. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  613. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  614. /// <param name="builder">This builder</param>
  615. /// <param name="transform"></param>
  616. /// <returns>Handle of the created motion data.</returns>
  617. public static MotionHandle BindToLocalScale<TOptions, TAdapter>(this MotionBuilder<Vector3, TOptions, TAdapter> builder, Transform transform)
  618. where TOptions : unmanaged, IMotionOptions
  619. where TAdapter : unmanaged, IMotionAdapter<Vector3, TOptions>
  620. {
  621. Error.IsNull(transform);
  622. return builder.BindWithState(transform, static (x, t) =>
  623. {
  624. t.localScale = x;
  625. });
  626. }
  627. /// <summary>
  628. /// Create a motion data and bind it to Transform.localScale.x
  629. /// </summary>
  630. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  631. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  632. /// <param name="builder">This builder</param>
  633. /// <param name="transform"></param>
  634. /// <returns>Handle of the created motion data.</returns>
  635. public static MotionHandle BindToLocalScaleX<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  636. where TOptions : unmanaged, IMotionOptions
  637. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  638. {
  639. Error.IsNull(transform);
  640. return builder.BindWithState(transform, static (x, t) =>
  641. {
  642. var p = t.localScale;
  643. p.x = x;
  644. t.localScale = p;
  645. });
  646. }
  647. /// <summary>
  648. /// Create a motion data and bind it to Transform.localScale.y
  649. /// </summary>
  650. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  651. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  652. /// <param name="builder">This builder</param>
  653. /// <param name="transform"></param>
  654. /// <returns>Handle of the created motion data.</returns>
  655. public static MotionHandle BindToLocalScaleY<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  656. where TOptions : unmanaged, IMotionOptions
  657. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  658. {
  659. Error.IsNull(transform);
  660. return builder.BindWithState(transform, static (x, t) =>
  661. {
  662. var p = t.localScale;
  663. p.y = x;
  664. t.localScale = p;
  665. });
  666. }
  667. /// <summary>
  668. /// Create a motion data and bind it to Transform.localScale.z
  669. /// </summary>
  670. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  671. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  672. /// <param name="builder">This builder</param>
  673. /// <param name="transform"></param>
  674. /// <returns>Handle of the created motion data.</returns>
  675. public static MotionHandle BindToLocalScaleZ<TOptions, TAdapter>(this MotionBuilder<float, TOptions, TAdapter> builder, Transform transform)
  676. where TOptions : unmanaged, IMotionOptions
  677. where TAdapter : unmanaged, IMotionAdapter<float, TOptions>
  678. {
  679. Error.IsNull(transform);
  680. return builder.BindWithState(transform, static (x, t) =>
  681. {
  682. var p = t.localScale;
  683. p.z = x;
  684. t.localScale = p;
  685. });
  686. }
  687. /// <summary>
  688. /// Create a motion data and bind it to Transform.localScale.xy
  689. /// </summary>
  690. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  691. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  692. /// <param name="builder">This builder</param>
  693. /// <param name="transform"></param>
  694. /// <returns>Handle of the created motion data.</returns>
  695. public static MotionHandle BindToLocalScaleXY<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  696. where TOptions : unmanaged, IMotionOptions
  697. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  698. {
  699. Error.IsNull(transform);
  700. return builder.BindWithState(transform, static (x, t) =>
  701. {
  702. var p = t.localScale;
  703. p.x = x.x;
  704. p.y = x.y;
  705. t.localScale = p;
  706. });
  707. }
  708. /// <summary>
  709. /// Create a motion data and bind it to Transform.localScale.xz
  710. /// </summary>
  711. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  712. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  713. /// <param name="builder">This builder</param>
  714. /// <param name="transform"></param>
  715. /// <returns>Handle of the created motion data.</returns>
  716. public static MotionHandle BindToLocalScaleXZ<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  717. where TOptions : unmanaged, IMotionOptions
  718. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  719. {
  720. Error.IsNull(transform);
  721. return builder.BindWithState(transform, static (x, t) =>
  722. {
  723. var p = t.localScale;
  724. p.x = x.x;
  725. p.z = x.y;
  726. t.localScale = p;
  727. });
  728. }
  729. /// <summary>
  730. /// Create a motion data and bind it to Transform.localScale.yz
  731. /// </summary>
  732. /// <typeparam name="TOptions">The type of special parameters given to the motion data</typeparam>
  733. /// <typeparam name="TAdapter">The type of adapter that support value animation</typeparam>
  734. /// <param name="builder">This builder</param>
  735. /// <param name="transform"></param>
  736. /// <returns>Handle of the created motion data.</returns>
  737. public static MotionHandle BindToLocalScaleYZ<TOptions, TAdapter>(this MotionBuilder<Vector2, TOptions, TAdapter> builder, Transform transform)
  738. where TOptions : unmanaged, IMotionOptions
  739. where TAdapter : unmanaged, IMotionAdapter<Vector2, TOptions>
  740. {
  741. Error.IsNull(transform);
  742. return builder.BindWithState(transform, static (x, t) =>
  743. {
  744. var p = t.localScale;
  745. p.y = x.x;
  746. p.z = x.y;
  747. t.localScale = p;
  748. });
  749. }
  750. }
  751. }