Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
            }
        }
Ejemplo n.º 3
0
 public void CopyTo(AMTrack track)
 {
     track.id          = id;
     track.name        = name;
     track._targetPath = _targetPath;
     DoCopy(track);
 }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        protected override void DoCopy(AMTrack track)
        {
            AMGOSetActiveTrack ntrack = track as AMGOSetActiveTrack;

            ntrack.obj         = obj;
            ntrack.startActive = startActive;
        }
Ejemplo n.º 6
0
        protected override void DoCopy(AMTrack track)
        {
            AMRotationTrack ntrack = track as AMRotationTrack;

            ntrack._obj = _obj;
            ntrack.cachedInitialRotation = cachedInitialRotation;
        }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
 void OnDisable()
 {
     window  = null;
     justSet = false;
     key     = null;
     track   = null;
     aData   = null;
 }
Ejemplo n.º 9
0
 public static void setValues(AMKey _key, AMTrack _track)
 {
     justSet = true;
     key     = _key;
     track   = _track;
     //aData = _aData;
     selectedIndex = AMTimeline.GetEaseTypeNameIndex(key.easeType);
 }
Ejemplo n.º 10
0
        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();
             *  }
             * });*/
        }
Ejemplo n.º 11
0
        protected override void DoCopy(AMTrack track)
        {
            AMTranslationTrack ntrack = track as AMTranslationTrack;

            ntrack._obj = _obj;
            ntrack.cachedInitialPosition = cachedInitialPosition;
            ntrack.pixelSnap             = pixelSnap;
            ntrack.pixelPerUnit          = pixelPerUnit;
        }
Ejemplo n.º 12
0
        public void deleteTrack(int trackid, bool deleteFromGroup, ref List <MonoBehaviour> modifiedItems)
        {
            AMTrack track = getTrack(trackid);

            if (track)
            {
                deleteTrack(track, deleteFromGroup, ref modifiedItems);
            }
        }
Ejemplo n.º 13
0
        public void deleteTrack(int trackid, bool deleteFromGroup = true)
        {
            AMTrack track = getTrack(trackid);

            if (track)
            {
                deleteTrack(track, deleteFromGroup);
            }
        }
Ejemplo n.º 14
0
        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;
        }
Ejemplo n.º 15
0
        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);
            }
        }
Ejemplo n.º 16
0
        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;
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 19
0
        // 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;
            }
        }
Ejemplo n.º 20
0
 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);
     }
 }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
 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);
             }
         }
     }
 }
Ejemplo n.º 23
0
        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);
        }
Ejemplo n.º 24
0
        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();
        }
Ejemplo n.º 25
0
        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());
        }
Ejemplo n.º 26
0
        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);
            }
        }
Ejemplo n.º 27
0
        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);
        }
Ejemplo n.º 28
0
        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);
        }
Ejemplo n.º 29
0
        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);
            }
        }
Ejemplo n.º 30
0
        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);
        }