/// <summary> /// Retrieve a list of important times for this track within the given range. /// </summary> /// <param name="from">The starting point of the range.</param> /// <param name="to">The end point of the range.</param> /// <returns>A list of ordered milestone times within the given range.</returns> public virtual List <float> GetMilestones(float from, float to) { bool isReverse = from > to; List <float> times = new List <float>(); TimelineItem[] timelineItemArr = GetTimelineItems(); for (int i = 0; i < timelineItemArr.Length; i++) { TimelineItem item = timelineItemArr[i]; if ((!isReverse && from < item.Firetime && to >= item.Firetime) || (isReverse && from > item.Firetime && to <= item.Firetime)) { if (!times.Contains(item.Firetime)) { times.Add(item.Firetime); } } if (item is TimelineAction) { float endTime = (item as TimelineAction).EndTime; if ((!isReverse && from < endTime && to >= endTime) || (isReverse && from > endTime && to <= endTime)) { if (!times.Contains(endTime)) { times.Add(endTime); } } } } times.Sort(); return(times); }
/// <summary> /// The cutscene has been set to an arbitrary time by the user. /// Processing must take place to catch up to the new time. /// </summary> /// <param name="time">The new cutscene running time</param> public virtual void SetTime(float time) { float previousTime = elapsedTime; elapsedTime = time; TimelineItem[] timelineItemArr = GetTimelineItems(); for (int i = 0; i < timelineItemArr.Length; i++) { TimelineItem item = timelineItemArr[i]; // Check if it is a global event. CinemaGlobalEvent cinemaEvent = item as CinemaGlobalEvent; if (cinemaEvent != null) { if ((previousTime < cinemaEvent.Firetime) && (((elapsedTime >= cinemaEvent.Firetime)))) { cinemaEvent.Trigger(); } else if (((previousTime >= cinemaEvent.Firetime) && (elapsedTime < cinemaEvent.Firetime))) { cinemaEvent.Reverse(); } } // Check if it is a global action. CinemaGlobalAction action = item as CinemaGlobalAction; if (action != null) { action.SetTime((time - action.Firetime), time - previousTime); } } }
/// <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; TimelineItem[] timelineItemArr = GetTimelineItems(); for (int i = 0; i < timelineItemArr.Length; i++) { TimelineItem item = timelineItemArr[i]; CinemaGlobalEvent cinemaEvent = item as CinemaGlobalEvent; if (cinemaEvent == null) { continue; } if ((previousTime < cinemaEvent.Firetime) && (((elapsedTime >= cinemaEvent.Firetime)))) { cinemaEvent.Trigger(); } else if (((previousTime >= cinemaEvent.Firetime) && (elapsedTime < cinemaEvent.Firetime))) { cinemaEvent.Reverse(); } } for (int i = 0; i < timelineItemArr.Length; i++) { TimelineItem item = timelineItemArr[i]; CinemaGlobalAction action = item as CinemaGlobalAction; if (action == null) { continue; } if ((previousTime < action.Firetime && 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) && (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); } } }
static public int get_Cutscene(IntPtr l) { try { CinemaDirector.TimelineItem self = (CinemaDirector.TimelineItem)checkSelf(l); pushValue(l, self.Cutscene); return(1); } catch (Exception e) { return(error(l, e)); } }
static public int Initialize(IntPtr l) { try { CinemaDirector.TimelineItem self = (CinemaDirector.TimelineItem)checkSelf(l); self.Initialize(); return(0); } catch (Exception e) { return(error(l, e)); } }
static public int set_Firetime(IntPtr l) { try { CinemaDirector.TimelineItem self = (CinemaDirector.TimelineItem)checkSelf(l); float v; checkType(l, 2, out v); self.Firetime = v; return(0); } catch (Exception e) { return(error(l, e)); } }
public override TimelineItem[] GetTimelineItems() { CinemaGlobalEvent[] events = Events; CinemaGlobalAction[] actions = Actions; TimelineItem[] items = new TimelineItem[events.Length + actions.Length]; for (int i = 0; i < events.Length; i++) { items[i] = events[i]; } for (int i = 0; i < actions.Length; i++) { items[i + events.Length] = actions[i]; } return(items); }
/// <summary> /// Prepares the TimelineTrack by caching all TimelineItems contained inside of it. /// </summary> public virtual void Optimize() { if (canOptimize) { itemCache = GetTimelineItems(); hasBeenOptimized = true; } TimelineItem[] items = GetTimelineItems(); if (items != null) { for (int i = 0; i < items.Length; ++i) { TimelineItem item = items[i]; if (item is IOptimizable) { (item as IOptimizable).Optimize(); } } } }
public static int CompareTimelineItem(TimelineItem x, TimelineItem y) { if (x == null) { if (y == null) { return(0); } else { return(-1); } } else { if (y == null) { return(1); } else { if (x.Firetime < y.Firetime) { return(-1); } else if (x.Firetime > y.Firetime) { return(1); } else { return(0); } } } }
static public int SetDefaults(IntPtr l) { try { int argc = LuaDLL.lua_gettop(l); if (argc == 1) { CinemaDirector.TimelineItem self = (CinemaDirector.TimelineItem)checkSelf(l); self.SetDefaults(); return(0); } else if (argc == 2) { CinemaDirector.TimelineItem self = (CinemaDirector.TimelineItem)checkSelf(l); UnityEngine.Object a1; checkType(l, 2, out a1); self.SetDefaults(a1); return(0); } return(error(l, "No matched override function to call")); } catch (Exception e) { return(error(l, e)); } }