Пример #1
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);
                }
            }
        }
Пример #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;

            foreach (TimelineItem item in GetTimelineItems())
            {
                // 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>
        /// Initialize the shot track by enabling the first Camera and disabling all others in the track.
        /// </summary>
        public override void Initialize()
        {
            base.elapsedTime = 0f;

            CinemaGlobalAction firstCamera = null;

            TimelineItem[] items = GetTimelineItems();
            for (int i = 0; i < items.Length; i++)
            {
                CinemaGlobalAction shot = items[i] as CinemaGlobalAction;
                shot.Initialize();
            }

            for (int i = 0; i < items.Length; i++)
            {
                CinemaGlobalAction shot = items[i] as CinemaGlobalAction;
                if (shot.Firetime == 0)
                {
                    firstCamera = shot;
                }
                else
                {
                    shot.End();
                }
            }

            if (firstCamera != null)
            {
                firstCamera.Trigger();
                if (ShotBegins != null)
                {
                    ShotBegins(this, new ShotEventArgs(firstCamera));
                }
            }
        }
        /// <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[] items = GetTimelineItems();
            for (int i = 0; i < items.Length; i++)
            {
                // Check if it is a global event.
                CinemaGlobalEvent cinemaEvent = items[i] as CinemaGlobalEvent;
                if (cinemaEvent != null)
                {
                    if ((previousTime < cinemaEvent.Firetime && time >= cinemaEvent.Firetime) || (cinemaEvent.Firetime == 0f && previousTime <= cinemaEvent.Firetime && time > cinemaEvent.Firetime))
                    {
                        cinemaEvent.Trigger();
                    }
                    else if (previousTime > cinemaEvent.Firetime && elapsedTime <= cinemaEvent.Firetime)
                    {
                        cinemaEvent.Reverse();
                    }
                }

                // Check if it is a global action.
                CinemaGlobalAction action = items[i] as CinemaGlobalAction;
                if (action != null)
                {
                    action.SetTime((time - action.Firetime), time - previousTime);
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Update the track to the given time
        /// </summary>
        /// <param name="time"></param>
        public virtual void UpdateTrack(float runningTime, float deltaTime)
        {
            if (mute)
            {
                return;
            }
            float previousTime = elapsedTime;

            elapsedTime = runningTime;

            TimelineItem[] items = GetTimelineItems();
            for (int i = 0; i < items.Length; 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.Length; i++)
            {
                CinemaGlobalAction action = items[i] as CinemaGlobalAction;
                if (action == null)
                {
                    continue;
                }
                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 || previousTime >= action.Cutscene.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);
                }
            }
        }
Пример #6
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);
                }
            }
        }
Пример #7
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;

            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);
                }
            }
        }
 static public int ReverseTrigger(IntPtr l)
 {
     try {
         CinemaDirector.CinemaGlobalAction self = (CinemaDirector.CinemaGlobalAction)checkSelf(l);
         self.ReverseTrigger();
         return(0);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int CompareTo(IntPtr l)
 {
     try {
         CinemaDirector.CinemaGlobalAction self = (CinemaDirector.CinemaGlobalAction)checkSelf(l);
         System.Object a1;
         checkType(l, 2, out a1);
         var ret = self.CompareTo(a1);
         pushValue(l, ret);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Пример #10
0
        /// <summary>
        /// Update the Shot Track by deltaTime. Will fire ShotBegins and ShotEnds events.
        /// </summary>
        /// <param name="time">The current running time.</param>
        /// <param name="deltaTime">The deltaTime since the last update.</param>
        public override void UpdateTrack(float time, float deltaTime)
        {
            if (mute)
            {
                return;
            }
            float previousTime = base.elapsedTime;

            base.elapsedTime = time;

            TimelineItem[] items = GetTimelineItems();
            for (int i = 0; i < items.Length; i++)
            {
                CinemaGlobalAction shot = items[i] as CinemaGlobalAction;
                float endTime           = shot.Firetime + shot.Duration;
                if ((previousTime <= shot.Firetime) && (base.elapsedTime >= shot.Firetime) && (base.elapsedTime < endTime))
                {
                    shot.Trigger();
                    if (ShotBegins != null)
                    {
                        ShotBegins(this, new ShotEventArgs(shot));
                    }
                }
                else if ((previousTime >= endTime) && (base.elapsedTime < endTime) && (base.elapsedTime >= shot.Firetime))
                {
                    shot.Trigger();
                    if (ShotBegins != null)
                    {
                        ShotBegins(this, new ShotEventArgs(shot));
                    }
                }
                else if ((previousTime >= shot.Firetime) && (previousTime < endTime) && (base.elapsedTime >= endTime))
                {
                    shot.End();
                    if (ShotEnds != null)
                    {
                        ShotEnds(this, new ShotEventArgs(shot));
                    }
                }
                else if ((previousTime > shot.Firetime) && (previousTime < endTime) && (base.elapsedTime < shot.Firetime))
                {
                    shot.End();
                    if (ShotEnds != null)
                    {
                        ShotEnds(this, new ShotEventArgs(shot));
                    }
                }
            }
        }
 static public int SetTime(IntPtr l)
 {
     try {
         CinemaDirector.CinemaGlobalAction self = (CinemaDirector.CinemaGlobalAction)checkSelf(l);
         System.Single a1;
         checkType(l, 2, out a1);
         System.Single a2;
         checkType(l, 3, out a2);
         self.SetTime(a1, a2);
         return(0);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Пример #12
0
        /// <summary>
        /// The shot track will jump to the given time. Disabling the current shot and enabling the new one.
        /// </summary>
        /// <param name="time">The new running time.</param>
        public override void SetTime(float time)
        {
            CinemaGlobalAction previousShot = null;
            CinemaGlobalAction newShot      = null;

            // Get the old shot and the new shot
            var items = GetAllTimelineItems();

            for (int i = 0; i < items.Count; i++)
            {
                CinemaGlobalAction shot = items[i] as CinemaGlobalAction;
                float endTime           = shot.Firetime + shot.Duration;
                if ((elapsedTime >= shot.Firetime) && (elapsedTime < endTime))
                {
                    previousShot = shot;
                }
                if ((time >= shot.Firetime) && (time < endTime))
                {
                    newShot = shot;
                }
            }

            // Trigger them as appropriate.
            if (newShot != previousShot)
            {
                if (previousShot != null)
                {
                    previousShot.End();
                    if (ShotEnds != null)
                    {
                        ShotEnds(this, new ShotEventArgs(previousShot));
                    }
                }
                if (newShot != null)
                {
                    newShot.Trigger();
                    if (ShotBegins != null)
                    {
                        ShotBegins(this, new ShotEventArgs(newShot));
                    }
                }
            }

            elapsedTime = time;
        }
Пример #13
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)
        {
#if PROFILE_FILE
            Profiler.BeginSample("TimelineTrack.SetTime");
#endif // PROFILE_FILE
            float previousTime = elapsedTime;
            elapsedTime = time;

            var timeLines = GetTimelineItems();
            var length    = timeLines.Length;
            for (var i = 0; i < length; i++)
            {
                var item = timeLines[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);
                }
            }
#if PROFILE_FILE
            Profiler.EndSample();
#endif // PROFILE_FILE
        }
Пример #14
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;
            {
                var __array5       = GetTimelineItems();
                var __arrayLength5 = __array5.Length;
                for (int __i5 = 0; __i5 < __arrayLength5; ++__i5)
                {
                    var item = (TimelineItem)__array5[__i5];
                    {
                        // 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);
                        }
                    }
                }
            }
        }
Пример #15
0
        /// <summary>
        /// Update the track to the given time
        /// </summary>
        /// <param name="time"></param>
        public virtual void UpdateTrack(float runningTime, float deltaTime)
        {
#if PROFILE_FILE
            Profiler.BeginSample("TimelineTrack.UpdateTrack");
#endif // PROFILE_FILE
            float previousTime = elapsedTime;
            elapsedTime = runningTime;

#if PROFILE_FILE
            Profiler.BeginSample("TimelineTrack.UpdateTrack.seg_1");
#endif // PROFILE_FILE
            var timeLines = GetTimelineItems();
            var length    = timeLines.Length;
            for (var i = 0; i < length; i++)
            {
                var item = timeLines[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();
                }
            }
#if PROFILE_FILE
            Profiler.EndSample();
#endif // PROFILE_FILE


#if PROFILE_FILE
            Profiler.BeginSample("TimelineTrack.UpdateTrack.seg_2");
#endif // PROFILE_FILE
            timeLines = GetTimelineItems();
            length    = timeLines.Length;
            for (var i = 0; i < length; i++)
            {
                var item = timeLines[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);
                }
            }
#if PROFILE_FILE
            Profiler.EndSample();
#endif // PROFILE_FILE

#if PROFILE_FILE
            Profiler.EndSample();
#endif // PROFILE_FILE
        }
Пример #16
0
 public ShotEventArgs(CinemaGlobalAction shot)
 {
     this.shot = shot;
 }
Пример #17
0
        public int CompareTo(object other)
        {
            CinemaGlobalAction otherAction = (CinemaGlobalAction)other;

            return((int)(otherAction.Firetime - this.Firetime));
        }
Пример #18
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;
            {
                var __array3       = GetTimelineItems();
                var __arrayLength3 = __array3.Length;
                for (int __i3 = 0; __i3 < __arrayLength3; ++__i3)
                {
                    var item = (TimelineItem)__array3[__i3];
                    {
                        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();
                        }
                    }
                }
            }
            {
                var __array4       = GetTimelineItems();
                var __arrayLength4 = __array4.Length;
                for (int __i4 = 0; __i4 < __arrayLength4; ++__i4)
                {
                    var item = (TimelineItem)__array4[__i4];
                    {
                        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);
                        }
                    }
                }
            }
        }