private static void UpdateTransitions() { if (!transitionInProgress) { return; } if (!exitCompleted) { if (exitTransition == null) { LoadNextScene(); enterTransition?.Begin(); exitCompleted = true; if (enterTransition == null) { transitionInProgress = false; exitCompleted = false; } } else { exitTransition.Update(); if (exitTransition.Done) { CurrentScene.OnExit(); exitTransition.Reset(); exitTransition = null; LoadNextScene(); enterTransition?.Begin(); exitCompleted = true; if (enterTransition == null) { transitionInProgress = false; exitCompleted = false; } } } } else { enterTransition.Update(); if (enterTransition.Done) { enterTransition.Reset(); enterTransition = null; transitionInProgress = false; exitCompleted = false; } } }
void AssociatedObject_Loaded(object sender, RoutedEventArgs e) { var targets = GetTargets(); if (targets == null) { return; } for (var index = 0; index < targets.Count; index++) { if ((bool)targets[index].GetValue(IgnoreTransitionProperty)) { continue; } var transitionIndex = Convert.ToInt32(targets[index].GetValue(TransitionIndexProperty)); for (var i = 1; i < Transition.Children.Count; i++) { Transition.Children[i].BeginTime = TimeSpan.FromMilliseconds(TransitionDelay * (transitionIndex != 0 ? transitionIndex : index)); } Transition.Begin(targets[index]); } }
private static void SetupTransitions() { if (CurrentScene == null) { exitTransition = null; enterTransition = NextScene.EnterTransition; } else { exitTransition = CurrentScene.ExitTransition; enterTransition = NextScene.EnterTransition; exitTransition.Begin(); } transitionInProgress = true; }
void ItemContainerGenerator_StatusChanged(object sender, EventArgs e) { if (((ItemContainerGenerator)sender).Status == GeneratorStatus.ContainersGenerated) { var targets = GetTargets(); if (targets == null) { return; } var newItems = targets.Where(t => !_lastTargets.Contains(t)).ToList(); if (newItems.Count == 0) { _lastTargets.Clear(); } for (var index = 0; index < newItems.Count; index++) { if ((bool)targets[index].GetValue(IgnoreTransitionProperty)) { continue; } var transitionIndex = Convert.ToInt32(targets[index].GetValue(TransitionIndexProperty)); for (var i = 1; i < Transition.Children.Count; i++) { Transition.Children[i].BeginTime = TimeSpan.FromMilliseconds(TransitionDelay * (transitionIndex != 0 ? transitionIndex : index)); } Transition.Begin(newItems[index]); } } else if (((ItemContainerGenerator)sender).Status == GeneratorStatus.GeneratingContainers) { _lastTargets = GetTargets(); } }