/// <summary> /// Update the track to the given time /// </summary> /// <param name="time"></param> public virtual void UpdateTrack(float runningTime, float deltaTime) { float previousTime = elapsedTime; elapsedTime = runningTime; List <TimelineItem> items = GetAllTimelineItems(); for (int i = 0; i < items.Count; i++) { CinemaGlobalEvent cinemaEvent = items[i] as CinemaGlobalEvent; if (cinemaEvent == null) { continue; } if ((previousTime < cinemaEvent.Firetime || previousTime <= 0f) && elapsedTime >= cinemaEvent.Firetime) { cinemaEvent.Trigger(); } else if (previousTime >= cinemaEvent.Firetime && elapsedTime <= cinemaEvent.Firetime) { cinemaEvent.Reverse(); } } for (int i = 0; i < items.Count; i++) { CinemaGlobalAction action = items[i] as CinemaGlobalAction; if (action == null) { continue; } var actionScene = action.GetCutScene(); if (((previousTime < action.Firetime || previousTime <= 0f) && elapsedTime >= action.Firetime) && elapsedTime < action.EndTime) { action.Trigger(); } else if ((previousTime <= action.EndTime) && (elapsedTime >= action.EndTime)) { action.End(); } else if (previousTime > action.Firetime && previousTime <= action.EndTime && elapsedTime <= action.Firetime) { action.ReverseTrigger(); } else if ((previousTime > action.EndTime || (actionScene != null && previousTime >= actionScene.Duration)) && (elapsedTime > action.Firetime) && (elapsedTime <= action.EndTime)) { action.ReverseEnd(); } else if ((elapsedTime > action.Firetime) && (elapsedTime < action.EndTime)) { float t = runningTime - action.Firetime; action.UpdateTime(t, deltaTime); } } }