AMPropertyTrack.cs 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Reflection;
  4. using System.Runtime.CompilerServices;
  5. using UnityEngine;
  6. [Serializable]
  7. public class AMPropertyTrack : AMTrack
  8. {
  9. public PropertyInfo propertyInfo
  10. {
  11. get
  12. {
  13. if (this.cachedPropertyInfo != null)
  14. {
  15. return this.cachedPropertyInfo;
  16. }
  17. if (!this.obj || !this.component || this.propertyName == null)
  18. {
  19. return null;
  20. }
  21. this.cachedPropertyInfo = this.component.GetType().GetProperty(this.propertyName);
  22. return this.cachedPropertyInfo;
  23. }
  24. set
  25. {
  26. if (value != null)
  27. {
  28. this.propertyName = value.Name;
  29. }
  30. else
  31. {
  32. this.propertyName = null;
  33. }
  34. this.cachedPropertyInfo = value;
  35. }
  36. }
  37. public FieldInfo fieldInfo
  38. {
  39. get
  40. {
  41. if (this.cachedFieldInfo != null)
  42. {
  43. return this.cachedFieldInfo;
  44. }
  45. if (!this.obj || !this.component || this.fieldName == null)
  46. {
  47. return null;
  48. }
  49. this.cachedFieldInfo = this.component.GetType().GetField(this.fieldName);
  50. return this.cachedFieldInfo;
  51. }
  52. set
  53. {
  54. if (value != null)
  55. {
  56. this.fieldName = value.Name;
  57. }
  58. else
  59. {
  60. this.fieldName = null;
  61. }
  62. this.cachedFieldInfo = value;
  63. }
  64. }
  65. public MethodInfo methodInfo
  66. {
  67. get
  68. {
  69. if (this.cachedMethodInfo != null)
  70. {
  71. return this.cachedMethodInfo;
  72. }
  73. if (!this.obj || !this.component || this.methodName == null)
  74. {
  75. return null;
  76. }
  77. Type[] array = new Type[this.methodParameterTypes.Length];
  78. for (int i = 0; i < this.methodParameterTypes.Length; i++)
  79. {
  80. array[i] = Type.GetType(this.methodParameterTypes[i]);
  81. }
  82. this.cachedMethodInfo = this.component.GetType().GetMethod(this.methodName, array);
  83. return this.cachedMethodInfo;
  84. }
  85. set
  86. {
  87. if (value != null)
  88. {
  89. this.methodName = value.Name;
  90. }
  91. else
  92. {
  93. this.methodName = null;
  94. }
  95. this.cachedMethodInfo = value;
  96. }
  97. }
  98. public MethodInfo methodInfoMorphNames
  99. {
  100. get
  101. {
  102. if (this.cachedMethodInfoMorphNames != null)
  103. {
  104. return this.cachedMethodInfoMorphNames;
  105. }
  106. if (!this.obj || !this.component || this.valueType != 8)
  107. {
  108. return null;
  109. }
  110. this.cachedMethodInfoMorphNames = this.component.GetType().GetMethod("GetChannelNames");
  111. return this.cachedMethodInfo;
  112. }
  113. }
  114. public override string getTrackType()
  115. {
  116. if (this.fieldInfo != null)
  117. {
  118. return this.fieldInfo.Name;
  119. }
  120. if (this.propertyInfo != null)
  121. {
  122. return this.propertyInfo.Name;
  123. }
  124. if (this.methodInfo != null && this.valueType == 8)
  125. {
  126. return "Morph";
  127. }
  128. return "Not Set";
  129. }
  130. public string getMemberInfoTypeName()
  131. {
  132. if (this.fieldInfo != null)
  133. {
  134. return "FieldInfo";
  135. }
  136. if (this.propertyInfo != null)
  137. {
  138. return "PropertyInfo";
  139. }
  140. if (this.methodInfo != null)
  141. {
  142. return "MethodInfo";
  143. }
  144. return "Undefined";
  145. }
  146. public bool isPropertySet()
  147. {
  148. return this.fieldInfo != null || this.propertyInfo != null || (this.methodInfo != null && this.valueType == 8);
  149. }
  150. public void addKey(int _frame)
  151. {
  152. if (AMPropertyTrack.isValueTypeNumeric(this.valueType))
  153. {
  154. this.addKey(_frame, this.getPropertyValueNumeric());
  155. }
  156. else if (this.valueType == 4)
  157. {
  158. this.addKey(_frame, this.getPropertyValueVector2());
  159. }
  160. else if (this.valueType == 5)
  161. {
  162. this.addKey(_frame, this.getPropertyValueVector3());
  163. }
  164. else if (this.valueType == 6)
  165. {
  166. this.addKey(_frame, this.getPropertyValueColor());
  167. }
  168. else if (this.valueType == 7)
  169. {
  170. this.addKey(_frame, this.getPropertyValueRect());
  171. }
  172. else if (this.valueType == 8)
  173. {
  174. this.addKeyMegaMorph(_frame, new List<float>());
  175. }
  176. else
  177. {
  178. Debug.LogError("Animator: Invalid ValueType " + this.valueType.ToString());
  179. }
  180. }
  181. public void addKeyMegaMorph(int _frame, List<float> channels)
  182. {
  183. foreach (AMKey amkey in this.keys)
  184. {
  185. AMPropertyKey ampropertyKey = (AMPropertyKey)amkey;
  186. if (ampropertyKey.frame == _frame)
  187. {
  188. ampropertyKey.setValueMegaMorph(channels);
  189. this.updateCache();
  190. return;
  191. }
  192. }
  193. AMPropertyKey ampropertyKey2 = ScriptableObject.CreateInstance<AMPropertyKey>();
  194. ampropertyKey2.frame = _frame;
  195. ampropertyKey2.setValueMegaMorph(channels);
  196. ampropertyKey2.easeType = 14;
  197. this.keys.Add(ampropertyKey2);
  198. this.updateCache();
  199. }
  200. public void addKey(int _frame, double val)
  201. {
  202. foreach (AMKey amkey in this.keys)
  203. {
  204. AMPropertyKey ampropertyKey = (AMPropertyKey)amkey;
  205. if (ampropertyKey.frame == _frame)
  206. {
  207. ampropertyKey.setValue(val);
  208. this.updateCache();
  209. return;
  210. }
  211. }
  212. AMPropertyKey ampropertyKey2 = ScriptableObject.CreateInstance<AMPropertyKey>();
  213. ampropertyKey2.frame = _frame;
  214. ampropertyKey2.setValue(val);
  215. ampropertyKey2.easeType = 21;
  216. this.keys.Add(ampropertyKey2);
  217. this.updateCache();
  218. }
  219. public void addKey(int _frame, Vector2 val)
  220. {
  221. foreach (AMKey amkey in this.keys)
  222. {
  223. AMPropertyKey ampropertyKey = (AMPropertyKey)amkey;
  224. if (ampropertyKey.frame == _frame)
  225. {
  226. ampropertyKey.setValue(val);
  227. this.updateCache();
  228. return;
  229. }
  230. }
  231. AMPropertyKey ampropertyKey2 = ScriptableObject.CreateInstance<AMPropertyKey>();
  232. ampropertyKey2.frame = _frame;
  233. ampropertyKey2.setValue(val);
  234. ampropertyKey2.easeType = 21;
  235. this.keys.Add(ampropertyKey2);
  236. this.updateCache();
  237. }
  238. public void addKey(int _frame, Vector3 val)
  239. {
  240. foreach (AMKey amkey in this.keys)
  241. {
  242. AMPropertyKey ampropertyKey = (AMPropertyKey)amkey;
  243. if (ampropertyKey.frame == _frame)
  244. {
  245. ampropertyKey.setValue(val);
  246. this.updateCache();
  247. return;
  248. }
  249. }
  250. AMPropertyKey ampropertyKey2 = ScriptableObject.CreateInstance<AMPropertyKey>();
  251. ampropertyKey2.frame = _frame;
  252. ampropertyKey2.setValue(val);
  253. ampropertyKey2.easeType = 21;
  254. this.keys.Add(ampropertyKey2);
  255. this.updateCache();
  256. }
  257. public void addKey(int _frame, Color val)
  258. {
  259. foreach (AMKey amkey in this.keys)
  260. {
  261. AMPropertyKey ampropertyKey = (AMPropertyKey)amkey;
  262. if (ampropertyKey.frame == _frame)
  263. {
  264. ampropertyKey.setValue(val);
  265. this.updateCache();
  266. return;
  267. }
  268. }
  269. AMPropertyKey ampropertyKey2 = ScriptableObject.CreateInstance<AMPropertyKey>();
  270. ampropertyKey2.frame = _frame;
  271. ampropertyKey2.setValue(val);
  272. ampropertyKey2.easeType = 21;
  273. this.keys.Add(ampropertyKey2);
  274. this.updateCache();
  275. }
  276. public void addKey(int _frame, Rect val)
  277. {
  278. foreach (AMKey amkey in this.keys)
  279. {
  280. AMPropertyKey ampropertyKey = (AMPropertyKey)amkey;
  281. if (ampropertyKey.frame == _frame)
  282. {
  283. ampropertyKey.setValue(val);
  284. this.updateCache();
  285. return;
  286. }
  287. }
  288. AMPropertyKey ampropertyKey2 = ScriptableObject.CreateInstance<AMPropertyKey>();
  289. ampropertyKey2.frame = _frame;
  290. ampropertyKey2.setValue(val);
  291. ampropertyKey2.easeType = 21;
  292. this.keys.Add(ampropertyKey2);
  293. this.updateCache();
  294. }
  295. public bool isObjectUnique(GameObject obj)
  296. {
  297. return this.obj != obj;
  298. }
  299. public bool changeObject(GameObject obj)
  300. {
  301. NDebug.Assert(this.componentName != null, "AMPropertyTrackに対象コンポーネント名が設定されていません。");
  302. Component component = obj.GetComponent(this.componentName);
  303. string text = this.propertyName;
  304. string text2 = this.fieldName;
  305. string value = this.methodName;
  306. if (component == null)
  307. {
  308. NDebug.Assert(string.Concat(new string[]
  309. {
  310. "AMPropertyTrackへ新しいオブジェクトへ置換しようとしましたが、同じ",
  311. this.componentName,
  312. "コンポーネントが",
  313. obj.name,
  314. "にはありませんでした。"
  315. }), false);
  316. }
  317. this.setObject(obj);
  318. this.setComponent(component);
  319. if (!string.IsNullOrEmpty(text))
  320. {
  321. PropertyInfo[] properties = component.GetType().GetProperties();
  322. foreach (PropertyInfo propertyInfo in properties)
  323. {
  324. if (propertyInfo.PropertyType != typeof(HideFlags))
  325. {
  326. if (propertyInfo.CanWrite && AMPropertyTrack.isValidType(propertyInfo.PropertyType) && propertyInfo.Name == text)
  327. {
  328. this.setPropertyInfo(propertyInfo);
  329. break;
  330. }
  331. }
  332. }
  333. }
  334. if (!string.IsNullOrEmpty(text2))
  335. {
  336. FieldInfo[] fields = component.GetType().GetFields();
  337. foreach (FieldInfo fieldInfo in fields)
  338. {
  339. if (AMPropertyTrack.isValidType(fieldInfo.FieldType))
  340. {
  341. if (fieldInfo.Name == text2)
  342. {
  343. this.setFieldInfo(fieldInfo);
  344. break;
  345. }
  346. }
  347. }
  348. }
  349. if (!string.IsNullOrEmpty(value))
  350. {
  351. NDebug.Assert("メソッドの置換(MegaMorph)には対応しておりません。", false);
  352. }
  353. this.updateCache();
  354. return false;
  355. }
  356. public bool setObject(GameObject obj)
  357. {
  358. if (this.obj != obj)
  359. {
  360. this.obj = obj;
  361. this.objName = obj.name;
  362. this.fieldInfo = null;
  363. this.fieldName = null;
  364. this.propertyInfo = null;
  365. this.propertyName = null;
  366. this.methodInfo = null;
  367. this.methodName = null;
  368. return true;
  369. }
  370. return false;
  371. }
  372. public bool setComponent(Component component)
  373. {
  374. if (this.component != component)
  375. {
  376. this.component = component;
  377. this.componentName = component.GetType().Name;
  378. return true;
  379. }
  380. return false;
  381. }
  382. public bool setPropertyInfo(PropertyInfo propertyInfo)
  383. {
  384. if (this.propertyInfo != propertyInfo)
  385. {
  386. this.setValueType(propertyInfo.PropertyType);
  387. this.propertyInfo = propertyInfo;
  388. this.fieldInfo = null;
  389. this.fieldName = null;
  390. return true;
  391. }
  392. return false;
  393. }
  394. public bool setFieldInfo(FieldInfo fieldInfo)
  395. {
  396. if (this.fieldInfo != fieldInfo)
  397. {
  398. this.setValueType(fieldInfo.FieldType);
  399. this.fieldInfo = fieldInfo;
  400. this.propertyInfo = null;
  401. this.propertyName = null;
  402. return true;
  403. }
  404. return false;
  405. }
  406. public bool setMethodInfo(MethodInfo methodInfo, string[] parameterTypes, AMPropertyTrack.ValueType valueType)
  407. {
  408. if (this.valueType != (int)valueType || this.methodParameterTypes != parameterTypes || this.methodInfo != methodInfo)
  409. {
  410. this.setValueType((int)valueType);
  411. this.methodParameterTypes = parameterTypes;
  412. this.methodInfo = methodInfo;
  413. this.propertyInfo = null;
  414. this.propertyName = null;
  415. this.fieldInfo = null;
  416. this.fieldName = null;
  417. return true;
  418. }
  419. return false;
  420. }
  421. public override void updateCache()
  422. {
  423. this.objName = this.obj.name;
  424. this.componentName = this.component.GetType().Name;
  425. base.sortKeys();
  426. base.destroyCache();
  427. this.cache = new List<AMAction>();
  428. for (int i = 0; i < this.keys.Count; i++)
  429. {
  430. AMPropertyAction ampropertyAction = ScriptableObject.CreateInstance<AMPropertyAction>();
  431. ampropertyAction.component = this.component;
  432. ampropertyAction.componentName = this.component.GetType().Name;
  433. ampropertyAction.startFrame = this.keys[i].frame;
  434. if (this.keys.Count > i + 1)
  435. {
  436. ampropertyAction.endFrame = this.keys[i + 1].frame;
  437. }
  438. else
  439. {
  440. ampropertyAction.endFrame = -1;
  441. }
  442. ampropertyAction.valueType = this.valueType;
  443. Type type = null;
  444. bool flag = true;
  445. int num = -1;
  446. if (this.fieldInfo != null)
  447. {
  448. ampropertyAction.fieldInfo = this.fieldInfo;
  449. type = this.fieldInfo.FieldType;
  450. flag = false;
  451. }
  452. else if (this.propertyInfo != null)
  453. {
  454. ampropertyAction.propertyInfo = this.propertyInfo;
  455. type = this.propertyInfo.PropertyType;
  456. flag = false;
  457. }
  458. else if (this.methodInfo != null)
  459. {
  460. ampropertyAction.methodInfo = this.methodInfo;
  461. ampropertyAction.methodParameterTypes = this.methodParameterTypes;
  462. if (this.valueType == 8)
  463. {
  464. num = 8;
  465. flag = false;
  466. }
  467. }
  468. if (flag)
  469. {
  470. Debug.LogError("Animator: Fatal Error; fieldInfo, propertyInfo and methodInfo are unset for Value Type " + this.valueType);
  471. ampropertyAction.destroy();
  472. return;
  473. }
  474. if (num == 8)
  475. {
  476. ampropertyAction.start_morph = new List<float>((this.keys[i] as AMPropertyKey).morph);
  477. if (ampropertyAction.endFrame != -1)
  478. {
  479. ampropertyAction.end_morph = new List<float>((this.keys[i + 1] as AMPropertyKey).morph);
  480. }
  481. }
  482. else if (AMPropertyTrack.isNumeric(type))
  483. {
  484. ampropertyAction.start_val = (this.keys[i] as AMPropertyKey).val;
  485. if (ampropertyAction.endFrame != -1)
  486. {
  487. ampropertyAction.end_val = (this.keys[i + 1] as AMPropertyKey).val;
  488. }
  489. }
  490. else if (type == typeof(Vector2))
  491. {
  492. ampropertyAction.start_vect2 = (this.keys[i] as AMPropertyKey).vect2;
  493. if (ampropertyAction.endFrame != -1)
  494. {
  495. ampropertyAction.end_vect2 = (this.keys[i + 1] as AMPropertyKey).vect2;
  496. }
  497. }
  498. else if (type == typeof(Vector3))
  499. {
  500. ampropertyAction.start_vect3 = (this.keys[i] as AMPropertyKey).vect3;
  501. if (ampropertyAction.endFrame != -1)
  502. {
  503. ampropertyAction.end_vect3 = (this.keys[i + 1] as AMPropertyKey).vect3;
  504. }
  505. }
  506. else if (type == typeof(Color))
  507. {
  508. ampropertyAction.start_color = (this.keys[i] as AMPropertyKey).color;
  509. if (ampropertyAction.endFrame != -1)
  510. {
  511. ampropertyAction.end_color = (this.keys[i + 1] as AMPropertyKey).color;
  512. }
  513. }
  514. else
  515. {
  516. if (type != typeof(Rect))
  517. {
  518. Debug.LogError("Animator: Fatal Error, property type '" + type.ToString() + "' not found.");
  519. ampropertyAction.destroy();
  520. return;
  521. }
  522. ampropertyAction.start_rect = (this.keys[i] as AMPropertyKey).rect;
  523. if (ampropertyAction.endFrame != -1)
  524. {
  525. ampropertyAction.end_rect = (this.keys[i + 1] as AMPropertyKey).rect;
  526. }
  527. }
  528. ampropertyAction.easeType = (this.keys[i] as AMPropertyKey).easeType;
  529. ampropertyAction.customEase = new List<float>(this.keys[i].customEase);
  530. this.cache.Add(ampropertyAction);
  531. }
  532. base.updateCache();
  533. }
  534. public double getPropertyValueNumeric()
  535. {
  536. if (this.fieldInfo != null)
  537. {
  538. return Convert.ToDouble(this.fieldInfo.GetValue(this.component));
  539. }
  540. return Convert.ToDouble(this.propertyInfo.GetValue(this.component, null));
  541. }
  542. public Vector2 getPropertyValueVector2()
  543. {
  544. if (this.fieldInfo != null)
  545. {
  546. return (Vector2)this.fieldInfo.GetValue(this.component);
  547. }
  548. return (Vector2)this.propertyInfo.GetValue(this.component, null);
  549. }
  550. public Vector3 getPropertyValueVector3()
  551. {
  552. if (this.fieldInfo != null)
  553. {
  554. return (Vector3)this.fieldInfo.GetValue(this.component);
  555. }
  556. return (Vector3)this.propertyInfo.GetValue(this.component, null);
  557. }
  558. public Color getPropertyValueColor()
  559. {
  560. if (this.fieldInfo != null)
  561. {
  562. return (Color)this.fieldInfo.GetValue(this.component);
  563. }
  564. return (Color)this.propertyInfo.GetValue(this.component, null);
  565. }
  566. public Rect getPropertyValueRect()
  567. {
  568. if (this.fieldInfo != null)
  569. {
  570. return (Rect)this.fieldInfo.GetValue(this.component);
  571. }
  572. return (Rect)this.propertyInfo.GetValue(this.component, null);
  573. }
  574. public static bool isNumeric(Type t)
  575. {
  576. return t == typeof(int) || t == typeof(long) || t == typeof(float) || t == typeof(double);
  577. }
  578. public static bool isValidType(Type t)
  579. {
  580. return t == typeof(int) || t == typeof(long) || t == typeof(float) || t == typeof(double) || t == typeof(Vector2) || t == typeof(Vector3) || t == typeof(Color) || t == typeof(Rect);
  581. }
  582. public void setValueType(int type)
  583. {
  584. this.valueType = type;
  585. }
  586. public void setValueType(Type t)
  587. {
  588. if (t == typeof(int))
  589. {
  590. this.valueType = 0;
  591. }
  592. else if (t == typeof(long))
  593. {
  594. this.valueType = 1;
  595. }
  596. else if (t == typeof(float))
  597. {
  598. this.valueType = 2;
  599. }
  600. else if (t == typeof(double))
  601. {
  602. this.valueType = 3;
  603. }
  604. else if (t == typeof(Vector2))
  605. {
  606. this.valueType = 4;
  607. }
  608. else if (t == typeof(Vector3))
  609. {
  610. this.valueType = 5;
  611. }
  612. else if (t == typeof(Color))
  613. {
  614. this.valueType = 6;
  615. }
  616. else if (t == typeof(Rect))
  617. {
  618. this.valueType = 7;
  619. }
  620. else
  621. {
  622. this.valueType = -1;
  623. Debug.LogWarning("Animator: Value type " + t.ToString() + " is unsupported.");
  624. }
  625. }
  626. public void previewFrame(float frame, bool quickPreview = false)
  627. {
  628. if (this.cache == null || this.cache.Count <= 0)
  629. {
  630. return;
  631. }
  632. if (!this.component || !this.obj)
  633. {
  634. return;
  635. }
  636. this.componentName = this.component.GetType().Name;
  637. if (string.IsNullOrEmpty(this.objName))
  638. {
  639. this.objName = this.obj.name;
  640. }
  641. int num = 0;
  642. if (frame <= (float)this.cache[0].startFrame || (this.cache[0] as AMPropertyAction).endFrame == -1)
  643. {
  644. if (this.fieldInfo != null)
  645. {
  646. this.fieldInfo.SetValue(this.component, (this.cache[0] as AMPropertyAction).getStartValue());
  647. this.refreshTransform();
  648. }
  649. else if (this.propertyInfo != null)
  650. {
  651. this.propertyInfo.SetValue(this.component, (this.cache[0] as AMPropertyAction).getStartValue(), null);
  652. this.refreshTransform();
  653. }
  654. else if (this.methodInfo != null)
  655. {
  656. try
  657. {
  658. string[] morphNames = this.getMorphNames();
  659. num = morphNames.Length;
  660. }
  661. catch
  662. {
  663. }
  664. this.previewMorph((this.cache[0] as AMPropertyAction).start_morph, num);
  665. }
  666. return;
  667. }
  668. if (frame >= (float)(this.cache[this.cache.Count - 2] as AMPropertyAction).endFrame)
  669. {
  670. if (this.fieldInfo != null)
  671. {
  672. this.fieldInfo.SetValue(this.component, (this.cache[this.cache.Count - 2] as AMPropertyAction).getEndValue());
  673. this.refreshTransform();
  674. }
  675. else if (this.propertyInfo != null)
  676. {
  677. this.propertyInfo.SetValue(this.component, (this.cache[this.cache.Count - 2] as AMPropertyAction).getEndValue(), null);
  678. this.refreshTransform();
  679. }
  680. else if (this.methodInfo != null)
  681. {
  682. string[] morphNames2 = this.getMorphNames();
  683. num = morphNames2.Length;
  684. this.previewMorph((this.cache[this.cache.Count - 2] as AMPropertyAction).end_morph, num);
  685. }
  686. return;
  687. }
  688. foreach (AMAction amaction in this.cache)
  689. {
  690. AMPropertyAction ampropertyAction = (AMPropertyAction)amaction;
  691. if (frame >= (float)ampropertyAction.startFrame && frame <= (float)ampropertyAction.endFrame)
  692. {
  693. if (quickPreview && !ampropertyAction.targetsAreEqual())
  694. {
  695. break;
  696. }
  697. if (frame == (float)ampropertyAction.startFrame)
  698. {
  699. if (this.fieldInfo != null)
  700. {
  701. this.fieldInfo.SetValue(this.component, ampropertyAction.getStartValue());
  702. this.refreshTransform();
  703. }
  704. else if (this.propertyInfo != null)
  705. {
  706. this.propertyInfo.SetValue(this.component, ampropertyAction.getStartValue(), null);
  707. this.refreshTransform();
  708. }
  709. else if (this.methodInfo != null)
  710. {
  711. string[] morphNames3 = this.getMorphNames();
  712. num = morphNames3.Length;
  713. this.previewMorph(ampropertyAction.start_morph, num);
  714. }
  715. break;
  716. }
  717. if (frame == (float)ampropertyAction.endFrame)
  718. {
  719. if (this.fieldInfo != null)
  720. {
  721. this.fieldInfo.SetValue(this.component, ampropertyAction.getEndValue());
  722. this.refreshTransform();
  723. }
  724. else if (this.propertyInfo != null)
  725. {
  726. this.propertyInfo.SetValue(this.component, ampropertyAction.getEndValue(), null);
  727. this.refreshTransform();
  728. }
  729. else if (this.methodInfo != null)
  730. {
  731. string[] morphNames4 = this.getMorphNames();
  732. num = morphNames4.Length;
  733. this.previewMorph(ampropertyAction.end_morph, num);
  734. }
  735. break;
  736. }
  737. AnimationCurve curve = null;
  738. AMTween.EasingFunction easingFunction;
  739. if (ampropertyAction.hasCustomEase())
  740. {
  741. if (AMPropertyTrack.<>f__mg$cache0 == null)
  742. {
  743. AMPropertyTrack.<>f__mg$cache0 = new AMTween.EasingFunction(AMTween.customEase);
  744. }
  745. easingFunction = AMPropertyTrack.<>f__mg$cache0;
  746. curve = ampropertyAction.easeCurve;
  747. }
  748. else
  749. {
  750. easingFunction = AMTween.GetEasingFunction((AMTween.EaseType)ampropertyAction.easeType);
  751. }
  752. float num2 = frame - (float)ampropertyAction.startFrame;
  753. if (num2 < 0f)
  754. {
  755. num2 = 0f;
  756. }
  757. float value = num2 / (float)ampropertyAction.getNumberOfFrames();
  758. if (ampropertyAction.valueType == 8)
  759. {
  760. string[] morphNames5 = this.getMorphNames();
  761. num = morphNames5.Length;
  762. List<float> list = new List<float>();
  763. for (int i = 0; i < num; i++)
  764. {
  765. if (ampropertyAction.start_morph.Count <= i || ampropertyAction.end_morph.Count <= i)
  766. {
  767. break;
  768. }
  769. list.Add(0f);
  770. list[i] = easingFunction(ampropertyAction.start_morph[i], ampropertyAction.end_morph[i], value, curve);
  771. }
  772. this.previewMorph(list, num);
  773. }
  774. else if (ampropertyAction.valueType == 0)
  775. {
  776. float start = Convert.ToSingle(ampropertyAction.start_val);
  777. float end = Convert.ToSingle(ampropertyAction.end_val);
  778. int num3 = (int)easingFunction(start, end, value, curve);
  779. if (this.fieldInfo != null)
  780. {
  781. this.fieldInfo.SetValue(this.component, num3);
  782. }
  783. else if (this.propertyInfo != null)
  784. {
  785. this.propertyInfo.SetValue(this.component, num3, null);
  786. }
  787. this.refreshTransform();
  788. }
  789. else if (ampropertyAction.valueType == 1)
  790. {
  791. float start2 = Convert.ToSingle(ampropertyAction.start_val);
  792. float end2 = Convert.ToSingle(ampropertyAction.end_val);
  793. long num4 = (long)easingFunction(start2, end2, value, curve);
  794. if (this.fieldInfo != null)
  795. {
  796. this.fieldInfo.SetValue(this.component, num4);
  797. }
  798. else if (this.propertyInfo != null)
  799. {
  800. this.propertyInfo.SetValue(this.component, num4, null);
  801. }
  802. this.refreshTransform();
  803. }
  804. else if (ampropertyAction.valueType == 2)
  805. {
  806. float start3 = Convert.ToSingle(ampropertyAction.start_val);
  807. float end3 = Convert.ToSingle(ampropertyAction.end_val);
  808. float num5 = easingFunction(start3, end3, value, curve);
  809. if (this.fieldInfo != null)
  810. {
  811. this.fieldInfo.SetValue(this.component, num5);
  812. }
  813. else if (this.propertyInfo != null)
  814. {
  815. this.propertyInfo.SetValue(this.component, num5, null);
  816. }
  817. this.refreshTransform();
  818. }
  819. else if (ampropertyAction.valueType == 3)
  820. {
  821. float start4 = Convert.ToSingle(ampropertyAction.start_val);
  822. float end4 = Convert.ToSingle(ampropertyAction.end_val);
  823. double num6 = (double)easingFunction(start4, end4, value, curve);
  824. if (this.fieldInfo != null)
  825. {
  826. this.fieldInfo.SetValue(this.component, num6);
  827. }
  828. else if (this.propertyInfo != null)
  829. {
  830. this.propertyInfo.SetValue(this.component, num6, null);
  831. }
  832. this.refreshTransform();
  833. }
  834. else if (ampropertyAction.valueType == 4)
  835. {
  836. Vector2 start_vect = ampropertyAction.start_vect2;
  837. Vector2 end_vect = ampropertyAction.end_vect2;
  838. Vector2 vector = default(Vector2);
  839. vector.x = easingFunction(start_vect.x, end_vect.x, value, curve);
  840. vector.y = easingFunction(start_vect.y, end_vect.y, value, curve);
  841. if (this.fieldInfo != null)
  842. {
  843. this.fieldInfo.SetValue(this.component, vector);
  844. }
  845. else if (this.propertyInfo != null)
  846. {
  847. this.propertyInfo.SetValue(this.component, vector, null);
  848. }
  849. this.refreshTransform();
  850. }
  851. else if (ampropertyAction.valueType == 5)
  852. {
  853. Vector3 start_vect2 = ampropertyAction.start_vect3;
  854. Vector3 end_vect2 = ampropertyAction.end_vect3;
  855. Vector3 vector2 = default(Vector3);
  856. vector2.x = easingFunction(start_vect2.x, end_vect2.x, value, curve);
  857. vector2.y = easingFunction(start_vect2.y, end_vect2.y, value, curve);
  858. vector2.z = easingFunction(start_vect2.z, end_vect2.z, value, curve);
  859. if (this.fieldInfo != null)
  860. {
  861. this.fieldInfo.SetValue(this.component, vector2);
  862. }
  863. else if (this.propertyInfo != null)
  864. {
  865. this.propertyInfo.SetValue(this.component, vector2, null);
  866. }
  867. this.refreshTransform();
  868. }
  869. else if (ampropertyAction.valueType == 6)
  870. {
  871. Color start_color = ampropertyAction.start_color;
  872. Color end_color = ampropertyAction.end_color;
  873. Color color = default(Color);
  874. color.r = easingFunction(start_color.r, end_color.r, value, curve);
  875. color.g = easingFunction(start_color.g, end_color.g, value, curve);
  876. color.b = easingFunction(start_color.b, end_color.b, value, curve);
  877. color.a = easingFunction(start_color.a, end_color.a, value, curve);
  878. if (this.fieldInfo != null)
  879. {
  880. this.fieldInfo.SetValue(this.component, color);
  881. }
  882. else if (this.propertyInfo != null)
  883. {
  884. this.propertyInfo.SetValue(this.component, color, null);
  885. }
  886. this.refreshTransform();
  887. }
  888. else if (ampropertyAction.valueType == 7)
  889. {
  890. Rect start_rect = ampropertyAction.start_rect;
  891. Rect end_rect = ampropertyAction.end_rect;
  892. Rect rect = default(Rect);
  893. rect.x = easingFunction(start_rect.x, end_rect.x, value, curve);
  894. rect.y = easingFunction(start_rect.y, end_rect.y, value, curve);
  895. rect.width = easingFunction(start_rect.width, end_rect.width, value, curve);
  896. rect.height = easingFunction(start_rect.height, end_rect.height, value, curve);
  897. if (this.fieldInfo != null)
  898. {
  899. this.fieldInfo.SetValue(this.component, rect);
  900. }
  901. else if (this.propertyInfo != null)
  902. {
  903. this.propertyInfo.SetValue(this.component, rect, null);
  904. }
  905. this.refreshTransform();
  906. }
  907. else
  908. {
  909. Debug.LogError("Animator: Invalid ValueType " + this.valueType.ToString());
  910. }
  911. break;
  912. }
  913. }
  914. }
  915. public void refreshTransform()
  916. {
  917. if (Application.isPlaying || !this.obj)
  918. {
  919. return;
  920. }
  921. this.obj.transform.position = new Vector3(this.obj.transform.position.x, this.obj.transform.position.y, this.obj.transform.position.z);
  922. }
  923. public void previewMorph(List<float> morph, int count)
  924. {
  925. if (this.valueType == 8)
  926. {
  927. this.parentTake.addMorph(this.obj, this.methodInfo, this.component, morph);
  928. }
  929. }
  930. public string getComponentName()
  931. {
  932. if (this.fieldInfo != null)
  933. {
  934. return this.fieldInfo.DeclaringType.Name;
  935. }
  936. if (this.propertyInfo != null)
  937. {
  938. return this.propertyInfo.DeclaringType.Name;
  939. }
  940. if (this.methodInfo != null && this.valueType == 8)
  941. {
  942. return "Morph";
  943. }
  944. return "Unknown";
  945. }
  946. public string getValueInitialization(int codeLanguage, string varName)
  947. {
  948. string text = string.Empty;
  949. if (this.valueType == 8)
  950. {
  951. string text2 = text;
  952. return string.Concat(new string[]
  953. {
  954. text2,
  955. "AMTween.SetMorph(",
  956. varName,
  957. ", ",
  958. varName,
  959. "Property, ",
  960. (this.cache[0] as AMPropertyAction).getFloatArrayString(codeLanguage, (this.cache[0] as AMPropertyAction).start_morph),
  961. ");"
  962. });
  963. }
  964. text = text + varName + "Property.";
  965. if (this.methodInfo != null)
  966. {
  967. text = text + "Invoke(" + varName + ", ";
  968. if (codeLanguage == 0)
  969. {
  970. text += "new object[]{";
  971. }
  972. else
  973. {
  974. text += "[";
  975. }
  976. }
  977. else
  978. {
  979. text = text + "SetValue(" + varName + ", ";
  980. }
  981. if (this.valueType == 0)
  982. {
  983. float num = Convert.ToSingle((this.cache[0] as AMPropertyAction).start_val);
  984. text += num;
  985. }
  986. else if (this.valueType == 1)
  987. {
  988. float num2 = Convert.ToSingle((this.cache[0] as AMPropertyAction).start_val);
  989. text += num2;
  990. }
  991. else if (this.valueType == 2)
  992. {
  993. float num3 = Convert.ToSingle((this.cache[0] as AMPropertyAction).start_val);
  994. text += num3;
  995. if (codeLanguage == 0)
  996. {
  997. text += "f";
  998. }
  999. }
  1000. else if (this.valueType == 3)
  1001. {
  1002. float num4 = Convert.ToSingle((this.cache[0] as AMPropertyAction).start_val);
  1003. text += num4;
  1004. if (codeLanguage == 0)
  1005. {
  1006. text += "f";
  1007. }
  1008. }
  1009. else if (this.valueType == 4)
  1010. {
  1011. Vector2 start_vect = (this.cache[0] as AMPropertyAction).start_vect2;
  1012. if (codeLanguage == 0)
  1013. {
  1014. string text2 = text;
  1015. text = string.Concat(new object[]
  1016. {
  1017. text2,
  1018. "new Vector2(",
  1019. start_vect.x,
  1020. "f, ",
  1021. start_vect.y,
  1022. "f)"
  1023. });
  1024. }
  1025. else
  1026. {
  1027. string text2 = text;
  1028. text = string.Concat(new object[]
  1029. {
  1030. text2,
  1031. "Vector2(",
  1032. start_vect.x,
  1033. ", ",
  1034. start_vect.y,
  1035. ")"
  1036. });
  1037. }
  1038. }
  1039. else if (this.valueType == 5)
  1040. {
  1041. Vector3 start_vect2 = (this.cache[0] as AMPropertyAction).start_vect3;
  1042. if (codeLanguage == 0)
  1043. {
  1044. string text2 = text;
  1045. text = string.Concat(new object[]
  1046. {
  1047. text2,
  1048. "new Vector3(",
  1049. start_vect2.x,
  1050. "f, ",
  1051. start_vect2.y,
  1052. "f, ",
  1053. start_vect2.z,
  1054. "f)"
  1055. });
  1056. }
  1057. else
  1058. {
  1059. string text2 = text;
  1060. text = string.Concat(new object[]
  1061. {
  1062. text2,
  1063. "Vector3(",
  1064. start_vect2.x,
  1065. ", ",
  1066. start_vect2.y,
  1067. ", ",
  1068. start_vect2.z,
  1069. ")"
  1070. });
  1071. }
  1072. }
  1073. else if (this.valueType == 6)
  1074. {
  1075. Color start_color = (this.cache[0] as AMPropertyAction).start_color;
  1076. if (codeLanguage == 0)
  1077. {
  1078. string text2 = text;
  1079. text = string.Concat(new object[]
  1080. {
  1081. text2,
  1082. "new Color(",
  1083. start_color.r,
  1084. "f, ",
  1085. start_color.g,
  1086. "f, ",
  1087. start_color.b,
  1088. "f, ",
  1089. start_color.a,
  1090. "f)"
  1091. });
  1092. }
  1093. else
  1094. {
  1095. string text2 = text;
  1096. text = string.Concat(new object[]
  1097. {
  1098. text2,
  1099. "Color(",
  1100. start_color.r,
  1101. ", ",
  1102. start_color.g,
  1103. ", ",
  1104. start_color.b,
  1105. ", ",
  1106. start_color.a,
  1107. ")"
  1108. });
  1109. }
  1110. }
  1111. else if (this.valueType == 7)
  1112. {
  1113. Rect start_rect = (this.cache[0] as AMPropertyAction).start_rect;
  1114. if (codeLanguage == 0)
  1115. {
  1116. string text2 = text;
  1117. text = string.Concat(new object[]
  1118. {
  1119. text2,
  1120. "new Rect(",
  1121. start_rect.x,
  1122. "f, ",
  1123. start_rect.y,
  1124. "f, ",
  1125. start_rect.width,
  1126. "f, ",
  1127. start_rect.height,
  1128. "f)"
  1129. });
  1130. }
  1131. else
  1132. {
  1133. string text2 = text;
  1134. text = string.Concat(new object[]
  1135. {
  1136. text2,
  1137. "Rect(",
  1138. start_rect.x,
  1139. ", ",
  1140. start_rect.y,
  1141. ", ",
  1142. start_rect.width,
  1143. ", ",
  1144. start_rect.height,
  1145. ")"
  1146. });
  1147. }
  1148. }
  1149. if (this.propertyInfo != null)
  1150. {
  1151. text += ", null";
  1152. }
  1153. else if (this.methodInfo != null)
  1154. {
  1155. if (codeLanguage == 0)
  1156. {
  1157. text += "}";
  1158. }
  1159. else
  1160. {
  1161. text += "]";
  1162. }
  1163. }
  1164. return text + ");";
  1165. }
  1166. public static bool isValueTypeNumeric(int valueType)
  1167. {
  1168. return valueType == 0 || valueType == 1 || valueType == 2 || valueType == 3;
  1169. }
  1170. public bool hasSamePropertyAs(AMPropertyTrack _track)
  1171. {
  1172. return _track.obj == this.obj && _track.component == this.component && _track.getTrackType() == this.getTrackType();
  1173. }
  1174. public string[] getMorphNames()
  1175. {
  1176. if (!this.component || this.methodInfoMorphNames == null)
  1177. {
  1178. return new string[0];
  1179. }
  1180. return (string[])this.methodInfoMorphNames.Invoke(this.component, null);
  1181. }
  1182. public override AnimatorTimeline.JSONInit getJSONInit()
  1183. {
  1184. if (!this.obj || this.keys.Count <= 0 || this.cache.Count <= 0)
  1185. {
  1186. return null;
  1187. }
  1188. AnimatorTimeline.JSONInit jsoninit = new AnimatorTimeline.JSONInit();
  1189. jsoninit.go = this.obj.gameObject.name;
  1190. List<string> list = new List<string>();
  1191. list.Add(this.component.GetType().Name);
  1192. if (this.fieldInfo != null)
  1193. {
  1194. jsoninit.typeExtra = "fieldinfo";
  1195. list.Add(this.fieldInfo.Name);
  1196. }
  1197. else if (this.propertyInfo != null)
  1198. {
  1199. jsoninit.typeExtra = "propertyinfo";
  1200. list.Add(this.propertyInfo.Name);
  1201. }
  1202. else if (this.methodInfo != null)
  1203. {
  1204. jsoninit.typeExtra = "methodinfo";
  1205. list.Add(this.methodInfo.Name);
  1206. foreach (string item in this.methodParameterTypes)
  1207. {
  1208. list.Add(item);
  1209. }
  1210. }
  1211. if (this.valueType == 8)
  1212. {
  1213. jsoninit.type = "propertymorph";
  1214. jsoninit.floats = (this.cache[0] as AMPropertyAction).start_morph.ToArray();
  1215. }
  1216. else if (this.valueType == 0)
  1217. {
  1218. jsoninit.type = "propertyint";
  1219. jsoninit._int = Convert.ToInt32((this.cache[0] as AMPropertyAction).start_val);
  1220. }
  1221. else if (this.valueType == 1)
  1222. {
  1223. jsoninit.type = "propertylong";
  1224. jsoninit._long = Convert.ToInt64((this.cache[0] as AMPropertyAction).start_val);
  1225. }
  1226. else if (this.valueType == 2)
  1227. {
  1228. jsoninit.type = "propertyfloat";
  1229. jsoninit.floats = new float[]
  1230. {
  1231. Convert.ToSingle((this.cache[0] as AMPropertyAction).start_val)
  1232. };
  1233. }
  1234. else if (this.valueType == 3)
  1235. {
  1236. jsoninit.type = "propertydouble";
  1237. jsoninit._double = (this.cache[0] as AMPropertyAction).start_val;
  1238. }
  1239. else if (this.valueType == 4)
  1240. {
  1241. jsoninit.type = "propertyvect2";
  1242. AnimatorTimeline.JSONVector2 jsonvector = new AnimatorTimeline.JSONVector2();
  1243. jsonvector.setValue((this.cache[0] as AMPropertyAction).start_vect2);
  1244. jsoninit._vect2 = jsonvector;
  1245. }
  1246. else if (this.valueType == 5)
  1247. {
  1248. jsoninit.type = "propertyvect3";
  1249. AnimatorTimeline.JSONVector3 jsonvector2 = new AnimatorTimeline.JSONVector3();
  1250. jsonvector2.setValue((this.cache[0] as AMPropertyAction).start_vect3);
  1251. jsoninit.position = jsonvector2;
  1252. }
  1253. else if (this.valueType == 6)
  1254. {
  1255. jsoninit.type = "propertycolor";
  1256. AnimatorTimeline.JSONColor jsoncolor = new AnimatorTimeline.JSONColor();
  1257. jsoncolor.setValue((this.cache[0] as AMPropertyAction).start_color);
  1258. jsoninit._color = jsoncolor;
  1259. }
  1260. else
  1261. {
  1262. if (this.valueType != 7)
  1263. {
  1264. Debug.LogWarning("Animator: Error exporting JSON, unknown Property ValueType " + this.valueType);
  1265. return null;
  1266. }
  1267. jsoninit.type = "propertyrect";
  1268. AnimatorTimeline.JSONRect jsonrect = new AnimatorTimeline.JSONRect();
  1269. jsonrect.setValue((this.cache[0] as AMPropertyAction).start_rect);
  1270. jsoninit._rect = jsonrect;
  1271. }
  1272. jsoninit.strings = list.ToArray();
  1273. return jsoninit;
  1274. }
  1275. public override List<GameObject> getDependencies()
  1276. {
  1277. List<GameObject> list = new List<GameObject>();
  1278. if (this.obj)
  1279. {
  1280. list.Add(this.obj);
  1281. }
  1282. return list;
  1283. }
  1284. public override List<GameObject> updateDependencies(List<GameObject> newReferences, List<GameObject> oldReferences)
  1285. {
  1286. List<GameObject> list = new List<GameObject>();
  1287. if (!this.obj)
  1288. {
  1289. return list;
  1290. }
  1291. int i = 0;
  1292. while (i < oldReferences.Count)
  1293. {
  1294. if (oldReferences[i] == this.obj)
  1295. {
  1296. string name = this.component.GetType().Name;
  1297. Component component = newReferences[i].GetComponent(name);
  1298. if (!component)
  1299. {
  1300. Debug.LogWarning(string.Concat(new string[]
  1301. {
  1302. "Animator: Property Track component '",
  1303. name,
  1304. "' not found on new reference for GameObject '",
  1305. this.obj.name,
  1306. "'. Duplicate not replaced."
  1307. }));
  1308. list.Add(oldReferences[i]);
  1309. return list;
  1310. }
  1311. if (component.GetType().GetProperty(this.propertyName) == null)
  1312. {
  1313. Debug.LogWarning(string.Concat(new string[]
  1314. {
  1315. "Animator: Property Track property '",
  1316. this.propertyName,
  1317. "' not found on new reference for GameObject '",
  1318. this.obj.name,
  1319. "'. Duplicate not replaced."
  1320. }));
  1321. list.Add(oldReferences[i]);
  1322. return list;
  1323. }
  1324. this.obj = newReferences[i];
  1325. this.component = component;
  1326. break;
  1327. }
  1328. else
  1329. {
  1330. i++;
  1331. }
  1332. }
  1333. return list;
  1334. }
  1335. public int valueType;
  1336. public GameObject obj;
  1337. public string objName;
  1338. public Component component;
  1339. public string componentName;
  1340. public string propertyName;
  1341. public string fieldName;
  1342. public string methodName;
  1343. public string[] methodParameterTypes;
  1344. private PropertyInfo cachedPropertyInfo;
  1345. private FieldInfo cachedFieldInfo;
  1346. private MethodInfo cachedMethodInfo;
  1347. private MethodInfo cachedMethodInfoMorphNames;
  1348. [CompilerGenerated]
  1349. private static AMTween.EasingFunction <>f__mg$cache0;
  1350. public enum ValueType
  1351. {
  1352. Integer,
  1353. Long,
  1354. Float,
  1355. Double,
  1356. Vector2,
  1357. Vector3,
  1358. Color,
  1359. Rect,
  1360. MorphChannels,
  1361. String
  1362. }
  1363. }