예제 #1
0
 internal void FireTourEnded()
 {
     if (TourEnded != null)
     {
         TourEnded.Invoke(this, new EventArgs());
     }
 }
예제 #2
0
        public void NextSlide()
        {
            if (tour.CurrentTourStop != null)
            {
                if (!tour.CurrentTourStop.MasterSlide)
                {
                    if (tour.CurrentTourStop.MusicTrack != null)
                    {
                        tour.CurrentTourStop.MusicTrack.Stop();
                    }

                    if (tour.CurrentTourStop.VoiceTrack != null)
                    {
                        tour.CurrentTourStop.VoiceTrack.Stop();
                    }

                    foreach (Overlay overlay in tour.CurrentTourStop.Overlays)
                    {
                        overlay.Stop();
                    }
                }
                else
                {
                    currentMasterSlide = tour.CurrentTourStop;
                }
            }

            if (tour.CurrentTourstopIndex < (tour.TourStops.Count - 1) || tour.CurrentTourStop.IsLinked)
            {
                if (tour.CurrentTourStop.EndTarget != null)
                {
                    WWTControl.Singleton.GotoTargetFull(false, true, tour.CurrentTourStop.EndTarget.CamParams, tour.CurrentTourStop.Target.StudyImageset, tour.CurrentTourStop.Target.BackgroundImageset);
                    WWTControl.Singleton.Mover = null;
                }
                onTarget = false;
                if (tour.CurrentTourStop.IsLinked)
                {
                    try
                    {
                        switch (tour.CurrentTourStop.NextSlide)
                        {
                        case "Return":
                            if (callStack.Count > 0)
                            {
                                PlayFromTourstop(tour.TourStops[callStack.Pop()]);
                            }
                            else
                            {
                                tour.CurrentTourstopIndex = tour.TourStops.Count - 1;
                            }
                            break;

                        default:
                            PlayFromTourstop(tour.TourStops[tour.GetTourStopIndexByID(tour.CurrentTourStop.NextSlide)]);
                            break;
                        }
                    }
                    catch
                    {
                        if ((tour.CurrentTourstopIndex < (tour.TourStops.Count - 1)))
                        {
                            tour.CurrentTourstopIndex++;
                        }
                    }
                }
                else
                {
                    tour.CurrentTourstopIndex++;
                }

                if (currentMasterSlide != null && tour.CurrentTourStop.MasterSlide)
                {
                    StopCurrentMaster();
                }

                bool instant = false;
                switch (tour.CurrentTourStop.Transition)
                {
                case TransitionType.Slew:
                    break;

                case TransitionType.CrossFade:
                    instant = true;
                    break;

                case TransitionType.CrossCut:
                    instant = true;
                    break;

                case TransitionType.FadeOutIn:
                    instant = true;
                    break;

                case TransitionType.FadeOut:
                    instant = true;
                    break;

                case TransitionType.FadeIn:
                    instant = true;
                    break;

                default:
                    break;
                }

                WWTControl.Singleton.GotoTarget(tour.CurrentTourStop.Target, false, instant, false);

                slideStartTime = Date.Now;
                // Move to new settings
                Settings.TourSettings           = tour.CurrentTourStop;
                SpaceTimeController.Now         = tour.CurrentTourStop.StartTime;
                SpaceTimeController.SyncToClock = false;
            }
            else
            {
                StopCurrentMaster();
                playing = false;
                if (Settings.Current.AutoRepeatTour)
                {
                    tour.CurrentTourstopIndex = -1;
                    Play();
                }
                else
                {
                    WWTControl.Singleton.FreezeView();
                    if (TourEnded != null)
                    {
                        TourEnded.Invoke(this, new EventArgs());
                    }

                    ShowEndTourPopup();
                    WWTControl.Singleton.HideUI(false);
                    WWTControl.scriptInterface.FireTourEnded();
                }
            }
        }
예제 #3
0
        public void NextSlide()
        {
            // Stop any existing current Slide
            if (tour.CurrentTourStop != null)
            {
                if (!tour.CurrentTourStop.MasterSlide)
                {
                    if (tour.CurrentTourStop.MusicTrack != null)
                    {
                        tour.CurrentTourStop.MusicTrack.Stop();
                    }

                    if (tour.CurrentTourStop.VoiceTrack != null)
                    {
                        tour.CurrentTourStop.VoiceTrack.Stop();
                    }

                    foreach (Overlay overlay in tour.CurrentTourStop.Overlays)
                    {
                        overlay.Stop();
                    }
                }
                else
                {
                    currentMasterSlide = tour.CurrentTourStop;
                }
            }
            // Check if this is the last slide in the deck
            if ((tour.CurrentTourstopIndex < (tour.TourStops.Count - 1)) || tour.CurrentTourStop.IsLinked)
            {
                // If there are more slides then move on..
                if (tour.CurrentTourStop.EndTarget != null)
                {
                    Earth3d.MainWindow.GotoTarget(false, true, tour.CurrentTourStop.EndTarget.CamParams, tour.CurrentTourStop.Target.StudyImageset, tour.CurrentTourStop.Target.BackgroundImageSet);
                    Earth3d.MainWindow.Mover = null;
                }
                onTarget = false;


                if (tour.CurrentTourStop.IsLinked && !PreRoll)
                {
                    try
                    {
                        switch (tour.CurrentTourStop.NextSlide)
                        {
                        case "Return":
                            if (callStack.Count > 0)
                            {
                                Earth3d.MainWindow.TourEdit.PlayFromTourstop(tour.TourStops[callStack.Pop()]);
                            }
                            else
                            {
                                tour.CurrentTourstopIndex = tour.TourStops.Count - 1;
                            }
                            break;

                        default:
                            Earth3d.MainWindow.TourEdit.PlayFromTourstop(tour.TourStops[tour.GetTourStopIndexByID(tour.CurrentTourStop.NextSlide)]);
                            break;
                        }
                    }
                    catch
                    {
                        if ((tour.CurrentTourstopIndex < (tour.TourStops.Count - 1)))
                        {
                            tour.CurrentTourstopIndex++;
                        }
                    }
                }
                else
                {
                    tour.CurrentTourstopIndex++;
                }

                Earth3d.MainWindow.TourEdit.EnsureSelectedVisible();


                if (currentMasterSlide != null && tour.CurrentTourStop.MasterSlide)
                {
                    StopCurrentMaster();
                }

                bool instant = false;
                switch (tour.CurrentTourStop.Transition)
                {
                case TransitionType.Slew:
                    break;

                case TransitionType.CrossFade:
                    instant = true;
                    break;

                case TransitionType.CrossCut:
                    instant = true;
                    break;

                case TransitionType.FadeOutIn:
                    instant = true;
                    break;

                case TransitionType.FadeOut:
                    instant = true;
                    break;

                case TransitionType.FadeIn:
                    instant = true;
                    break;

                default:
                    break;
                }

                if (PreRoll)
                {
                    if (instant)
                    {
                        PreRollTime = 2;
                    }
                    else
                    {
                        PreRollTime = .2;
                    }
                    instant = true;
                }

                Earth3d.MainWindow.GotoTarget(tour.CurrentTourStop.Target, false, Earth3d.NoUi ? true : instant, false);

                slideStartTime = SpaceTimeController.MetaNow;
                // Move to new settings
                Settings.TourSettings           = tour.CurrentTourStop;
                SpaceTimeController.Now         = tour.CurrentTourStop.StartTime;
                SpaceTimeController.SyncToClock = false;
            }
            else
            {
                StopCurrentMaster();

                playing = false;

                if (PreRoll)
                {
                    PreRoll = false;
                    tour.CurrentTourstopIndex = -1;
                    Play();
                    return;
                }

                if (Properties.Settings.Default.AutoRepeatTour && !tour.EditMode)
                {
                    tour.CurrentTourstopIndex = -1;
                    Play();
                }
                else
                {
                    Earth3d.MainWindow.FreezeView();
                    if (TourEnded != null)
                    {
                        TourEnded.Invoke(this, new EventArgs());
                    }
                }
            }
        }