private void AddNewState(float time, string stateName)
        {
            var clipData = CreateInstance <AnimationClipData>();

            clipData.TargetObject     = AnimationTimeline.AffectedObject.gameObject;
            clipData.StartTime        = time;
            clipData.StateName        = stateName;
            clipData.StateDuration    = MecanimAnimationUtility.GetStateDuration(stateName, clipData.TargetObject);
            clipData.PlaybackDuration = MecanimAnimationUtility.GetStateDuration(stateName, clipData.TargetObject);
            clipData.Track            = AnimationTrack;
            USUndoManager.RegisterCreatedObjectUndo(clipData, "Add New Clip");

            var cachedData = CreateInstance <AnimationClipRenderData>();

            cachedData.animationClipData = clipData;
            USUndoManager.RegisterCreatedObjectUndo(clipData, "Add New Clip");

            USUndoManager.RegisterCompleteObjectUndo(AnimationTrack, "Add New Clip");
            AnimationTrack.AddClip(clipData);

            USUndoManager.RegisterCompleteObjectUndo(this, "Add New Clip");
            cachedClipRenderData.Add(cachedData);

            OnSelectedObjects(new List <UnityEngine.Object>()
            {
                clipData
            });
        }
        public void RemoveAnimationTrack(AnimationTrack track)
        {
            USUndoManager.RegisterCompleteObjectUndo(AnimationTimeline, "Add New Track");
            AnimationTimeline.RemoveTrack(track);

            USUndoManager.RegisterCompleteObjectUndo(USHierarchy, "Add New Track");
            USHierarchy.RootItems.Remove(USHierarchy.RootItems.Where(item => ((USAnimationTimelineTrackHierarchyItem)item).AnimationTrack == track).First());

            USUndoManager.DestroyImmediate(track);
        }
        public void Process(float sequenceTime, float playbackRate)
        {
            this.allClips.Clear();
            for (int i = 0; i < this.AnimationTimeline.AnimationTracks.Count; i++)
            {
                AnimationTrack animationTrack = this.AnimationTimeline.AnimationTracks[i];
                for (int j = 0; j < animationTrack.TrackClips.Count; j++)
                {
                    AnimationClipData animationClipData = animationTrack.TrackClips[j];
                    this.allClips.Add(animationClipData);
                    animationClipData.RunningLayer = animationTrack.Layer;
                }
            }
            float num  = sequenceTime - this.previousTime;
            float num2 = Mathf.Abs(num);
            bool  flag = num < 0f;
            float num3 = USSequencer.SequenceUpdateRate;
            float num4 = this.previousTime + num3;

            if (flag)
            {
                this.AnimationTimeline.ResetAnimation();
                this.previousTime = 0f;
                this.AnimationTimeline.Process(sequenceTime, playbackRate);
            }
            else
            {
                while (num2 > 0f)
                {
                    this.cachedRunningClips.Clear();
                    for (int k = 0; k < this.allClips.Count; k++)
                    {
                        AnimationClipData animationClipData2 = this.allClips[k];
                        if (AnimationClipData.IsClipRunning(num4, animationClipData2))
                        {
                            this.cachedRunningClips.Add(animationClipData2);
                        }
                    }
                    this.cachedRunningClips.Sort((AnimationClipData x, AnimationClipData y) => x.StartTime.CompareTo(y.StartTime));
                    for (int l = 0; l < this.cachedRunningClips.Count; l++)
                    {
                        AnimationClipData animationClipData3 = this.cachedRunningClips[l];
                        this.PlayClip(animationClipData3, animationClipData3.RunningLayer, num4);
                    }
                    this.Animator.Update(num3);
                    num2 -= USSequencer.SequenceUpdateRate;
                    if (!Mathf.Approximately(num2, 1.401298E-45f) && num2 < USSequencer.SequenceUpdateRate)
                    {
                        num3 = num2;
                    }
                    num4 += num3;
                }
            }
            this.previousTime = sequenceTime;
        }
示例#4
0
 public void RemoveTrack(AnimationTrack animationTrack)
 {
     animationsTracks.Remove(animationTrack);
 }
示例#5
0
 public void AddTrack(AnimationTrack animationTrack)
 {
     animationsTracks.Add(animationTrack);
 }