示例#1
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));
                    }
                }
            }
        }
示例#2
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));
                }
            }
        }
示例#3
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);
                }
            }
        }
示例#4
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);
                }
            }
        }
示例#5
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 Trigger(IntPtr l)
 {
     try {
         CinemaDirector.CinemaGlobalAction self = (CinemaDirector.CinemaGlobalAction)checkSelf(l);
         self.Trigger();
         return(0);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
示例#7
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;
        }
示例#8
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);
                        }
                    }
                }
            }
        }
示例#9
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
        }