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; }
public void RemoveTrack(AnimationTrack animationTrack) { animationsTracks.Remove(animationTrack); }
public void AddTrack(AnimationTrack animationTrack) { animationsTracks.Add(animationTrack); }