123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 |
- using System;
- using System.Collections.Generic;
- using System.Runtime.CompilerServices;
- using UnityEngine;
- [Serializable]
- public class AMRotationTrack : AMTrack
- {
- public Transform obj
- {
- get
- {
- return this._obj;
- }
- set
- {
- if (value != null && this.cache.Count <= 0)
- {
- this.cachedInitialRotation = value.rotation;
- }
- this._obj = value;
- if (this._obj != null)
- {
- this.objName = this._obj.name;
- }
- else
- {
- this.objName = string.Empty;
- }
- }
- }
- public override string getTrackType()
- {
- return "Rotation";
- }
- public void addKey(int _frame, Quaternion _rotation)
- {
- foreach (AMKey amkey in this.keys)
- {
- AMRotationKey amrotationKey = (AMRotationKey)amkey;
- if (amrotationKey.frame == _frame)
- {
- amrotationKey.rotation = _rotation;
- this.updateCache();
- return;
- }
- }
- AMRotationKey amrotationKey2 = ScriptableObject.CreateInstance<AMRotationKey>();
- amrotationKey2.frame = _frame;
- amrotationKey2.rotation = _rotation;
- amrotationKey2.easeType = 21;
- this.keys.Add(amrotationKey2);
- this.updateCache();
- }
- public bool changeObject(Transform _obj)
- {
- this.obj = _obj;
- this.updateCache();
- return true;
- }
- public override void updateCache()
- {
- if (this._obj != null)
- {
- this.objName = this._obj.name;
- }
- else
- {
- this.objName = string.Empty;
- }
- base.sortKeys();
- base.destroyCache();
- this.cache = new List<AMAction>();
- for (int i = 0; i < this.keys.Count; i++)
- {
- AMRotationAction amrotationAction = ScriptableObject.CreateInstance<AMRotationAction>();
- amrotationAction.startFrame = this.keys[i].frame;
- if (this.keys.Count > i + 1)
- {
- amrotationAction.endFrame = this.keys[i + 1].frame;
- }
- else
- {
- amrotationAction.endFrame = -1;
- }
- amrotationAction.obj = this.obj;
- amrotationAction.startRotation = (this.keys[i] as AMRotationKey).rotation;
- if (amrotationAction.endFrame != -1)
- {
- amrotationAction.endRotation = (this.keys[i + 1] as AMRotationKey).rotation;
- }
- amrotationAction.easeType = (this.keys[i] as AMRotationKey).easeType;
- amrotationAction.customEase = new List<float>(this.keys[i].customEase);
- this.cache.Add(amrotationAction);
- }
- base.updateCache();
- }
- public override void previewFrame(float frame, AMTrack extraTrack = null)
- {
- if (!this.obj)
- {
- return;
- }
- if (string.IsNullOrEmpty(this.objName))
- {
- this.objName = this.obj.name;
- }
- if (this.cache.Count <= 0)
- {
- return;
- }
- if (this.cache[0] == null)
- {
- this.updateCache();
- }
- if (frame <= (float)this.cache[0].startFrame || (this.cache[0] as AMRotationAction).endFrame == -1)
- {
- this.obj.rotation = (this.cache[0] as AMRotationAction).getStartQuaternion();
- return;
- }
- if (frame >= (float)(this.cache[this.cache.Count - 2] as AMRotationAction).endFrame)
- {
- this.obj.rotation = (this.cache[this.cache.Count - 2] as AMRotationAction).getEndQuaternion();
- return;
- }
- foreach (AMAction amaction in this.cache)
- {
- AMRotationAction amrotationAction = (AMRotationAction)amaction;
- if (frame >= (float)amrotationAction.startFrame && frame <= (float)amrotationAction.endFrame)
- {
- if (frame == (float)amrotationAction.startFrame)
- {
- this.obj.rotation = amrotationAction.getStartQuaternion();
- break;
- }
- if (frame == (float)amrotationAction.endFrame)
- {
- this.obj.rotation = amrotationAction.getEndQuaternion();
- break;
- }
- AnimationCurve curve = null;
- AMTween.EasingFunction easingFunction;
- if (amrotationAction.hasCustomEase())
- {
- if (AMRotationTrack.<>f__mg$cache0 == null)
- {
- AMRotationTrack.<>f__mg$cache0 = new AMTween.EasingFunction(AMTween.customEase);
- }
- easingFunction = AMRotationTrack.<>f__mg$cache0;
- curve = amrotationAction.easeCurve;
- }
- else
- {
- easingFunction = AMTween.GetEasingFunction((AMTween.EaseType)amrotationAction.easeType);
- }
- float num = frame - (float)amrotationAction.startFrame;
- if (num < 0f)
- {
- num = 0f;
- }
- float value = num / (float)amrotationAction.getNumberOfFrames();
- Quaternion startQuaternion = amrotationAction.getStartQuaternion();
- Quaternion endQuaternion = amrotationAction.getEndQuaternion();
- Quaternion rotation = default(Quaternion);
- rotation.x = easingFunction(startQuaternion.x, endQuaternion.x, value, curve);
- rotation.y = easingFunction(startQuaternion.y, endQuaternion.y, value, curve);
- rotation.z = easingFunction(startQuaternion.z, endQuaternion.z, value, curve);
- rotation.w = easingFunction(startQuaternion.w, endQuaternion.w, value, curve);
- this.obj.rotation = rotation;
- break;
- }
- }
- }
- public bool autoKey(Transform _obj, int frame)
- {
- if (!this.obj)
- {
- return false;
- }
- if (this.obj != _obj)
- {
- return false;
- }
- if (this.cache.Count <= 0)
- {
- if (_obj.rotation != this.cachedInitialRotation)
- {
- this.addKey(frame, _obj.rotation);
- return true;
- }
- return false;
- }
- else
- {
- Quaternion rotationAtFrame = this.getRotationAtFrame((float)frame);
- if (_obj.rotation != rotationAtFrame)
- {
- this.addKey(frame, _obj.rotation);
- return true;
- }
- return false;
- }
- }
- public Quaternion getRotationAtFrame(float frame)
- {
- if (frame <= (float)this.cache[0].startFrame || (this.cache[0] as AMRotationAction).endFrame == -1)
- {
- return (this.cache[0] as AMRotationAction).getStartQuaternion();
- }
- if (frame >= (float)(this.cache[this.cache.Count - 2] as AMRotationAction).endFrame)
- {
- return (this.cache[this.cache.Count - 2] as AMRotationAction).getEndQuaternion();
- }
- foreach (AMAction amaction in this.cache)
- {
- AMRotationAction amrotationAction = (AMRotationAction)amaction;
- if (frame >= (float)amrotationAction.startFrame && frame <= (float)amrotationAction.endFrame)
- {
- if (frame == (float)amrotationAction.startFrame)
- {
- return amrotationAction.getStartQuaternion();
- }
- if (frame == (float)amrotationAction.endFrame)
- {
- return amrotationAction.getEndQuaternion();
- }
- AnimationCurve curve = null;
- AMTween.EasingFunction easingFunction;
- if (amrotationAction.hasCustomEase())
- {
- if (AMRotationTrack.<>f__mg$cache1 == null)
- {
- AMRotationTrack.<>f__mg$cache1 = new AMTween.EasingFunction(AMTween.customEase);
- }
- easingFunction = AMRotationTrack.<>f__mg$cache1;
- curve = amrotationAction.easeCurve;
- }
- else
- {
- easingFunction = AMTween.GetEasingFunction((AMTween.EaseType)amrotationAction.easeType);
- }
- float num = frame - (float)amrotationAction.startFrame;
- if (num < 0f)
- {
- num = 0f;
- }
- float value = num / (float)amrotationAction.getNumberOfFrames();
- Quaternion startQuaternion = amrotationAction.getStartQuaternion();
- Quaternion endQuaternion = amrotationAction.getEndQuaternion();
- return new Quaternion
- {
- x = easingFunction(startQuaternion.x, endQuaternion.x, value, curve),
- y = easingFunction(startQuaternion.y, endQuaternion.y, value, curve),
- z = easingFunction(startQuaternion.z, endQuaternion.z, value, curve),
- w = easingFunction(startQuaternion.w, endQuaternion.w, value, curve)
- };
- }
- }
- Debug.LogError(string.Concat(new object[]
- {
- "Animator: Could not get ",
- this.obj.name,
- " rotation at frame '",
- frame,
- "'"
- }));
- return new Quaternion(0f, 0f, 0f, 0f);
- }
- public Vector4 getInitialRotation()
- {
- return (this.keys[0] as AMRotationKey).getRotationQuaternion();
- }
- public override AnimatorTimeline.JSONInit getJSONInit()
- {
- if (!this.obj || this.keys.Count <= 0)
- {
- return null;
- }
- AnimatorTimeline.JSONInit jsoninit = new AnimatorTimeline.JSONInit();
- jsoninit.type = "rotation";
- jsoninit.go = this.obj.gameObject.name;
- AnimatorTimeline.JSONQuaternion jsonquaternion = new AnimatorTimeline.JSONQuaternion();
- jsonquaternion.setValue(this.getInitialRotation());
- jsoninit.rotation = jsonquaternion;
- return jsoninit;
- }
- public override List<GameObject> getDependencies()
- {
- List<GameObject> list = new List<GameObject>();
- if (this.obj)
- {
- list.Add(this.obj.gameObject);
- }
- return list;
- }
- public override List<GameObject> updateDependencies(List<GameObject> newReferences, List<GameObject> oldReferences)
- {
- if (!this.obj)
- {
- return new List<GameObject>();
- }
- for (int i = 0; i < oldReferences.Count; i++)
- {
- if (oldReferences[i] == this.obj.gameObject)
- {
- this.obj = newReferences[i].transform;
- break;
- }
- }
- return new List<GameObject>();
- }
- [SerializeField]
- private Transform _obj;
- public string objName;
- public Quaternion cachedInitialRotation;
- [CompilerGenerated]
- private static AMTween.EasingFunction <>f__mg$cache0;
- [CompilerGenerated]
- private static AMTween.EasingFunction <>f__mg$cache1;
- }
|