Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
                }
            }
        }
Пример #3
0
        /// <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));
     }
 }
Пример #7
0
        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);
        }
Пример #8
0
 /// <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();
             }
         }
     }
 }
Пример #9
0
 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));
     }
 }