internal void FireTourEnded() { if (TourEnded != null) { TourEnded.Invoke(this, new EventArgs()); } }
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(); } } }
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()); } } } }