Exemplo n.º 1
0
        public override void UpdateTrack(float time, float deltaTime)
        {
            float previousTime = elapsedTime;

            base.UpdateTrack(time, deltaTime);
            TimelineItem[] items = GetTimelineItems();
            foreach (TimelineItem item in items)
            {
                CinemaActorEvent cinemaEvent = item as CinemaActorEvent;
                if (cinemaEvent != null)
                {
                    if (previousTime <= cinemaEvent.Firetime && elapsedTime > cinemaEvent.Firetime)
                    {
                        foreach (Transform actor in Actors)
                        {
                            if (actor != null)
                            {
                                cinemaEvent._time = 0;
                                cinemaEvent.Trigger(actor.gameObject);
                            }
                        }
                    }
                    #if UNITY_EDITOR
                    else if (elapsedTime > cinemaEvent.Firetime)
                    {
                        if (!Application.isPlaying)
                        {
                            foreach (Transform actor in Actors)
                            {
                                if (actor != null)
                                {
                                    cinemaEvent.UpdateTrack(actor.gameObject, time, deltaTime);
                                }
                            }
                        }
                    }
                    #endif
                    if (((previousTime >= cinemaEvent.Firetime) && (elapsedTime < cinemaEvent.Firetime)))
                    {
                        foreach (Transform actor in Actors)
                        {
                            if (actor != null)
                            {
                                cinemaEvent.Reverse(actor.gameObject);
                            }
                        }
                    }
                }

                CinemaActorAction action = item as CinemaActorAction;
                if (action != null)
                {
                    if ((previousTime <= action.Firetime && elapsedTime > action.Firetime) && elapsedTime < action.EndTime)
                    {
                        foreach (Transform actor in Actors)
                        {
                            if (actor != null)
                            {
                                action.Trigger(actor.gameObject);
                            }
                        }
                    }
                    else if (previousTime <= action.EndTime && elapsedTime > action.EndTime)
                    {
                        foreach (Transform actor in Actors)
                        {
                            if (actor != null)
                            {
                                action.End(actor.gameObject);
                            }
                        }
                    }
                    else if (previousTime >= action.Firetime && previousTime < action.EndTime && elapsedTime < action.Firetime)
                    {
                        foreach (Transform actor in Actors)
                        {
                            if (actor != null)
                            {
                                action.ReverseTrigger(actor.gameObject);
                            }
                        }
                    }
                    else if ((previousTime > action.EndTime && (elapsedTime > action.Firetime) && (elapsedTime <= action.EndTime)))
                    {
                        foreach (Transform actor in Actors)
                        {
                            if (actor != null)
                            {
                                action.ReverseEnd(actor.gameObject);
                            }
                        }
                    }
                    else if ((elapsedTime > action.Firetime) && (elapsedTime <= action.EndTime))
                    {
                        foreach (Transform actor in Actors)
                        {
                            if (actor != null)
                            {
                                float runningTime = time - action.Firetime;
                                action.UpdateTime(actor.gameObject, runningTime, deltaTime);
                            }
                        }
                    }
                }
            }
        }