public void UpdateSequencer(float deltaTime) { deltaTime *= this.playbackRate; if (this.playing) { this.runningTime += deltaTime; float num = this.runningTime; if (num <= 0f) { num = 0f; } if (num > this.Duration) { num = this.Duration; } this.BeforeUpdate(this, this.runningTime); USTimelineContainer[] array = this.TimelineContainers; for (int i = 0; i < array.Length; i++) { USTimelineContainer uSTimelineContainer = array[i]; uSTimelineContainer.ProcessTimelines(num, this.PlaybackRate); } this.AfterUpdate(this, this.runningTime); bool flag = false; if (this.playbackRate > 0f && this.RunningTime >= this.duration) { flag = true; } if (this.playbackRate < 0f && this.RunningTime <= 0f) { flag = true; } if (flag) { if (this.isLoopingSequence) { float num2 = 0f; if (this.playbackRate > 0f && this.RunningTime >= this.Duration) { num2 = this.RunningTime - this.Duration; } if (this.playbackRate < 0f && this.RunningTime <= 0f) { num2 = this.Duration + this.RunningTime; } this.Stop(); this.runningTime = num2; this.previousTime = -1f; this.Play(); this.UpdateSequencer(0f); return; } if (this.isPingPongingSequence) { if (this.playbackRate > 0f && this.RunningTime >= this.Duration) { this.runningTime = this.Duration + (this.Duration - this.RunningTime); } if (this.playbackRate < 0f && this.RunningTime <= 0f) { this.runningTime = -1f * this.RunningTime; } this.playbackRate *= -1f; return; } this.playing = false; base.StopCoroutine("UpdateSequencerCoroutine"); this.End(); } } if (this.setSkipTime > 0f) { USTimelineContainer[] array2 = this.TimelineContainers; for (int j = 0; j < array2.Length; j++) { USTimelineContainer uSTimelineContainer2 = array2[j]; uSTimelineContainer2.SkipTimelineTo(this.setSkipTime); } this.runningTime = this.setSkipTime; this.previousTime = Time.time; this.setSkipTime = -1f; } }