public int getTotalSelectedFrames(AMTakeData take) { int total = 0; for (int i = 0; i < contextSelectionTracks.Count; i++) { int trackId = contextSelectionTracks[i]; AMTrack track = null; for (int j = 0; j < take.trackValues.Count; j++) { if (take.trackValues[j].id == trackId) { track = take.trackValues[j]; break; } } if (track != null) { int lastFrame = track.getLastFrame(take.frameRate); if (lastFrame > total) { total = lastFrame; } } } return(total); }
public void reloadAnimatorData() { aData = null; loadAnimatorData(); bool shouldClose = true; if (aData != null) { AMTakeData take = aData.currentTake; // update references for track and key foreach (AMTrack _track in take.trackValues) { if (track == _track) { track = _track; foreach (AMKey _key in track.keys) { if (key == _key) { key = _key; shouldClose = false; } } } } } if (shouldClose) { this.Close(); } }
public void CopyTo(AMTrack track) { track.id = id; track.name = name; track._targetPath = _targetPath; DoCopy(track); }
public AMKey[] removeSelectedKeysFromTrack(AMTakeData take, AMITarget itarget, int track_id) { List <AMKey> dkeys = new List <AMKey>(); bool didDeleteKeys = false; AMTrack track = take.getTrack(track_id); for (int i = 0; i < track.keys.Count; i++) { if (!isFrameInContextSelection(track.keys[i].frame)) { continue; } dkeys.Add(track.keys[i]); track.keys.Remove(track.keys[i]); i--; didDeleteKeys = true; } if (didDeleteKeys) { track.updateCache(itarget); } return(dkeys.ToArray()); }
protected override void DoCopy(AMTrack track) { AMGOSetActiveTrack ntrack = track as AMGOSetActiveTrack; ntrack.obj = obj; ntrack.startActive = startActive; }
protected override void DoCopy(AMTrack track) { AMRotationTrack ntrack = track as AMRotationTrack; ntrack._obj = _obj; ntrack.cachedInitialRotation = cachedInitialRotation; }
private void deleteTrack(AMTrack track, bool deleteFromGroup, ref List <MonoBehaviour> modifiedItems) { int id = track.id; int index = getTrackIndex(id); if (track && modifiedItems != null) { foreach (AMKey key in track.keys) { modifiedItems.Add(key); } modifiedItems.Add(track); } if (mCameraSwitcher == track) { mCameraSwitcher = null; } trackValues.RemoveAt(index); if (deleteFromGroup) { deleteTrackFromGroups(id); } sortTracks(); }
void OnDisable() { window = null; justSet = false; key = null; track = null; aData = null; }
public static void setValues(AMKey _key, AMTrack _track) { justSet = true; key = _key; track = _track; //aData = _aData; selectedIndex = AMTimeline.GetEaseTypeNameIndex(key.easeType); }
public override void build(AMSequence seq, AMTrack track, int index, UnityEngine.Object target) { //float sTime = getWaitTime(seq.take.frameRate, 0.0f); Sequence _seq = seq.sequence; AudioSource _src = target as AudioSource; float frameRate = seq.take.frameRate; float frameCount = Mathf.Ceil(audioClip.length * frameRate); var tweenV = DOTween.To(new AMPlugValueSetElapsed(), () => 0f, (t) => { if (t >= 1f) { return; } float fFrame = Mathf.RoundToInt(t * frameCount); _src.time = (fFrame / frameRate) % audioClip.length; _src.pitch = _seq.timeScale; if (oneShot) { _src.PlayOneShot(audioClip); } else { if ((_src.isPlaying && _src.clip == audioClip)) { return; } _src.loop = loop; _src.clip = audioClip; _src.Play(); } }, 0, (loop && !oneShot) ? 1f / frameRate : getTime(seq.take.frameRate)); tweenV.plugOptions = new AMPlugValueSetOptions(_seq); seq.Insert(this, tweenV); /* * _seq.InsertCallback(sTime, () => { * //don't play when going backwards * if(_seq.isBackwards) return; * * _src.pitch = _seq.timeScale; * * if(oneShot) * _src.PlayOneShot(audioClip); * else { * if((_src.isPlaying && _src.clip == audioClip)) return; * _src.loop = loop; * _src.clip = audioClip; * _src.Play(); * } * });*/ }
protected override void DoCopy(AMTrack track) { AMTranslationTrack ntrack = track as AMTranslationTrack; ntrack._obj = _obj; ntrack.cachedInitialPosition = cachedInitialPosition; ntrack.pixelSnap = pixelSnap; ntrack.pixelPerUnit = pixelPerUnit; }
public void deleteTrack(int trackid, bool deleteFromGroup, ref List <MonoBehaviour> modifiedItems) { AMTrack track = getTrack(trackid); if (track) { deleteTrack(track, deleteFromGroup, ref modifiedItems); } }
public void deleteTrack(int trackid, bool deleteFromGroup = true) { AMTrack track = getTrack(trackid); if (track) { deleteTrack(track, deleteFromGroup); } }
protected override void DoCopy(AMTrack track) { AMMaterialTrack ntrack = track as AMMaterialTrack; ntrack.obj = obj; ntrack._matOverride = _matOverride; ntrack._matInd = _matInd; ntrack._property = _property; ntrack._propertyType = _propertyType; }
public override void build(AMSequence seq, AMTrack track, int index, UnityEngine.Object target) { if (methodName == null) { return; } //get component and fill the cached method info Component comp; if (seq.target.isMeta) { if (string.IsNullOrEmpty(componentName)) { return; } comp = (target as GameObject).GetComponent(componentName); } else { if (component == null) { return; } comp = component; } float duration = 1.0f / seq.take.frameRate; if (useSendMessage) { if (parameters == null || parameters.Count <= 0) { var tween = DOTween.To(new AMPlugValueSetElapsed(), () => 0, (x) => comp.SendMessage(methodName, null, SendMessageOptions.DontRequireReceiver), 0, duration); tween.plugOptions.SetSequence(seq); seq.Insert(this, tween); } else { var tween = DOTween.To(new AMPlugValueSetElapsed(), () => 0, (x) => comp.SendMessage(methodName, parameters[0].toObject(), SendMessageOptions.DontRequireReceiver), 0, duration); tween.plugOptions.SetSequence(seq); seq.Insert(this, tween); } } else { var method = cachedMethodInfo != null ? cachedMethodInfo : comp.GetType().GetMethod(methodName, GetParamTypes()); object[] parms = buildParams(); var tween = DOTween.To(new AMPlugValueSetElapsed(), () => 0, (x) => method.Invoke(comp, parms), 0, duration); tween.plugOptions.SetSequence(seq); seq.Insert(this, tween); } }
protected override void DoCopy(AMTrack track) { AMPropertyTrack ntrack = track as AMPropertyTrack; ntrack.valueType = valueType; ntrack.obj = obj; ntrack.component = component; ntrack.componentName = componentName; ntrack.fieldName = fieldName; ntrack.propertyName = propertyName; }
public override void build(AMSequence seq, AMTrack track, int index, UnityEngine.Object obj) { AMTriggerData parm = new AMTriggerData() { valueString = this.valueString, valueInt = this.valueInt, valueFloat = this.valueFloat }; var tween = DOTween.To(new AMPlugValueSetElapsed(), () => 0, (x) => seq.Trigger(this, parm), 0, 1.0f / seq.take.frameRate); tween.plugOptions = new AMPlugValueSetOptions(seq.sequence); seq.Insert(this, tween); }
public override void build(AMSequence seq, AMTrack track, int index, UnityEngine.Object obj) { if (!obj || (canTween && endFrame == -1)) { return; } int frameRate = seq.take.frameRate; Transform trans = obj as Transform; Transform sTarget = GetTarget(seq.target); Transform eTarget = canTween ? (track.keys[index + 1] as AMOrientationKey).GetTarget(seq.target) : null; var tween = DOTween.To(new FloatPlugin(), () => 0f, (x) => { if (sTarget == null && eTarget == null) { return; } else if (sTarget == null) { trans.LookAt(eTarget); } else if (eTarget == null || sTarget == eTarget) { trans.LookAt(sTarget); } else { Quaternion s = Quaternion.LookRotation(sTarget.position - trans.position); Quaternion e = Quaternion.LookRotation(eTarget.position - trans.position); trans.rotation = Quaternion.Lerp(s, e, x); } }, 1f, getTime(frameRate)); if (sTarget != eTarget) { if (hasCustomEase()) { tween.SetEase(easeCurve); } else { tween.SetEase((Ease)easeType, amplitude, period); } } else { tween.SetEase(Ease.Linear); } seq.Insert(this, tween); }
// Adding a new track type // ===================== // Create track class // Make sure to add [System.Serializable] to every class // Set track class properties // Override getTrackType in track class // Add track type to showObjectFieldFor in AMTimeline // Create an addXTrack method here, and put it in AMTimeline // Create track key class, make sure to override CreateClone // Create AMXAction class for track class that overrides execute and implements ToString # TO DO # // Override updateCache in track class // Create addKey method in track class, and put it in addKey in AMTimeline // Add track to timeline action in AMTimeline // Add inspector properties to showInspectorPropertiesFor in AMTimeline // Override previewFrame method in track class // Add track object to timelineSelectObjectFor in AMTimeline (optional) // Override getDependencies and updateDependencies in track class // Add details to Code View # TO DO # #region Tracks // add translation track public void addTrack(int groupId, AMITarget target, Transform obj, AMTrack a) { a.setName(getTrackCount()); a.id = getUniqueTrackID(); a.enabled = false; a.SetTarget(target, obj); addTrack(groupId, a); if (a is AMCameraSwitcherTrack) { mCameraSwitcher = a as AMCameraSwitcherTrack; } }
public static void RecordUndoTrackAndKeys(AMTrack track, bool complete, string label) { if (complete) { Undo.RegisterCompleteObjectUndo(track, label); Undo.RegisterCompleteObjectUndo(track.keys.ToArray(), label); } else { Undo.RecordObject(track, label); Undo.RecordObjects(track.keys.ToArray(), label); } }
public override void build(AMSequence seq, AMTrack track, int index, UnityEngine.Object target) { GameObject go = target as GameObject; if (go == null) { return; } var tween = DOTween.To(new AMPlugValueSet <bool>(), () => setActive, (x) => go.SetActive(x), setActive, getTime(seq.take.frameRate)); tween.plugOptions = new AMPlugValueSetOptions(seq.sequence); seq.Insert(this, tween); }
void AMITarget.MaintainTargetCache(AMTrack track) { if ((this as AMITarget).isMeta && mCache.ContainsKey(track.targetPath)) { UnityEngine.Object obj = track.GetTarget(this); if (obj) { string objPath = AMUtil.GetPath(transform, obj); if (objPath != track.targetPath) { mCache.Remove(track.targetPath); } } } }
static int TrackCompare(AMTrack t1, AMTrack t2) { if (t1 == t2) { return(0); } else if (t1 == null) { return(1); } else if (t2 == null) { return(-1); } return(t1.order - t2.order); }
public void deleteTrack(AMTrack track, bool deleteFromGroup = true) { int id = track.id; int index = getTrackIndex(id); if (track) { if (mCameraSwitcher == track) { mCameraSwitcher = null; } track.destroy(); } trackValues.RemoveAt(index); if (deleteFromGroup) { deleteTrackFromGroups(id); } sortTracks(); }
public AMKey[] getContextSelectionKeysForTrack(AMTrack track) { List <AMKey> keys = new List <AMKey>(); foreach (AMKey key in track.keys) { for (int i = 0; i < contextSelection.Count; i += 2) { // if selection start frame > frame, break out of sorted list if (contextSelection[i] > key.frame) { break; } if (contextSelection[i] <= key.frame && contextSelection[i + 1] >= key.frame) { keys.Add(key); } } } return(keys.ToArray()); }
public override void build(AMSequence seq, AMTrack track, int index, UnityEngine.Object obj) { Transform trans = obj as Transform; int frameRate = seq.take.frameRate; //allow tracks with just one key if (track.keys.Count == 1) { interp = (int)Interpolation.None; } if (!canTween) { var tween = DOTween.To(new AMPlugValueSet <Quaternion>(), () => rotation, (x) => trans.localRotation = x, rotation, getTime(frameRate)); tween.plugOptions.SetSequence(seq); seq.Insert(this, tween); } else if (endFrame == -1) { return; } else { Quaternion endRotation = (track.keys[index + 1] as AMRotationKey).rotation; var tween = DOTween.To(new PureQuaternionPlugin(), () => trans.localRotation, (x) => trans.localRotation = x, endRotation, getTime(frameRate)); if (hasCustomEase()) { tween.SetEase(easeCurve); } else { tween.SetEase((Ease)easeType, amplitude, period); } seq.Insert(this, tween); } }
public float getElementsHeight(int group_id, float height_track, float height_track_foldin, float height_group) { initGroups(); float height = 0; AMGroup grp = getGroup(group_id); if (group_id < 0) { height += height_group; if (grp.elements.Count <= 0 && grp.foldout) // "no tracks" label height { height += height_group; } } if (group_id == 0 || grp.foldout) { foreach (int id in grp.elements) { // group within group if (id < 0) { height += getElementsHeight(id, height_track, height_track_foldin, height_group); } else { AMTrack track = getTrack(id); if (track && track.foldout) { height += height_track; } else { height += height_track_foldin; } } } } return(height); }
public override void build(AMSequence seq, AMTrack track, int index, UnityEngine.Object target) { // if targets are equal do nothing if (endFrame == -1 || !hasTargets(seq.target) || targetsAreEqual(seq.target)) { return; } Camera[] allCameras = (track as AMCameraSwitcherTrack).GetCachedCameras(seq.target); int frameRate = seq.take.frameRate; float frameCount = getNumberOfFrames(frameRate); var itarget = seq.target; var _seq = seq.sequence; var tween = DOTween.To(new FloatPlugin(), () => 0f, (x) => { AMCameraFade cf = AMCameraFade.getCameraFade(); AMCameraSwitcherKey.PlayParam param = cf.playParam; if (param == null) { param = cf.playParam = new AMCameraSwitcherKey.PlayParam(); } param.Apply(this, frameRate, itarget, allCameras, _seq.IsBackwards()); cf.percent = x / frameCount; cf.value = 1.0f - cf.percent; }, frameCount, frameCount / frameRate); if (hasCustomEase()) { tween.SetEase(easeCurve); } else { tween.SetEase((Ease)easeType, amplitude, period); } seq.Insert(this, tween); }
public void shiftOutOfBoundsKeysOnTrack(AMTakeData take, AMITarget itarget, AMTrack _track) { int offset = _track.shiftOutOfBoundsKeys(itarget); if (contextSelection.Count <= 0) { return; } for (int i = 0; i < contextSelection.Count; i++) { contextSelection[i] += offset; } // shift all keys on all tracks foreach (AMTrack track in take.trackValues) { if (track.id == _track.id) { continue; } track.offsetKeysFromBy(itarget, 0, offset); } }
public bool contextSelectionHasKeys(AMTakeData take) { AMTrack track = getSelectedTrack(take); if (track) { foreach (AMKey key in track.keys) { for (int i = 0; i < contextSelection.Count; i += 2) { // if selection start frame > frame, break out of sorted list if (contextSelection[i] > key.frame) { break; } if (contextSelection[i] <= key.frame && contextSelection[i + 1] >= key.frame) { return(true); } } } } return(false); }