コード例 #1
0
ファイル: SceneManager.cs プロジェクト: thismarvin/relatus
        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;
                }
            }
        }
コード例 #2
0
        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]);
            }
        }
コード例 #3
0
ファイル: SceneManager.cs プロジェクト: delveam/keep-stalling
        private static void SetupTransitions()
        {
            if (CurrentScene == null)
            {
                exitTransition  = null;
                enterTransition = NextScene.EnterTransition;
            }
            else
            {
                exitTransition  = CurrentScene.ExitTransition;
                enterTransition = NextScene.EnterTransition;
                exitTransition.Begin();
            }

            transitionInProgress = true;
        }
コード例 #4
0
        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();
            }
        }