Ejemplo n.º 1
0
 public override void Proceed()
 {
     if (transition.IsFinished)
     {
         if (IsValid(previousScene))
         {
             previousScene.RaiseOnUnregistered();
             if (doAutoDispose)
             {
                 previousScene.Dispose();
             }
         }
         if (IsValid(Engine.CurrentScene))
         {
             Engine.CurrentScene.RaiseOnTransitionFinished();
         }
         Engine.transitionState = new NeutralState();
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 終了処理を行う。
        /// </summary>
        public static void Terminate()
        {
            if (core == null)
            {
                return;
            }

            if (CurrentScene != null)
            {
                CurrentScene.Dispose();
            }

            if (nextScene != null)
            {
                nextScene.Dispose();
            }

            if (previousScene != null)
            {
                previousScene.Dispose();
            }


            CurrentScene  = null;
            nextScene     = null;
            previousScene = null;
            transition    = null;

            GC.Terminate();

            core.Terminate();
            core.Release();
            core = null;

            Mouse = null;

            var refCount = swig.asd_core.GetGlobalReferenceCount__();

            if (refCount > 0)
            {
                Particular.Helper.ThrowUnreleasedInstanceException(refCount);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// イベントを実行し、進行可否を判断する。
        /// </summary>
        /// <returns>進行可能か?</returns>
        public static bool DoEvents()
        {
            if (core == null)
            {
                return(false);
            }

            GC.Update();

            bool mes = core.DoEvents();

            if (Mouse != null)
            {
                Mouse.RefreshAllState();
            }

            if (transition != null)
            {
                if (transition.SwigObject.GetIsSceneChanged() && nextScene != null)
                {
                    if (CurrentScene != null)
                    {
                        CurrentScene.CallChanging();
                    }
                    previousScene = CurrentScene;
                    CurrentScene  = nextScene;
                    core.ChangeScene(nextScene.CoreScene);
                    nextScene.Start();
                    nextScene = null;
                }

                if (transition.SwigObject.GetIsFinished())
                {
                    if (previousScene != null)
                    {
                        previousScene.Dispose();
                        previousScene = null;
                    }

                    transition = null;
                    CurrentScene.CallTransitionFinished();
                }
            }
            else
            {
                if (nextScene != null)
                {
                    if (CurrentScene != null)
                    {
                        CurrentScene.CallChanging();
                        CurrentScene.Dispose();
                    }

                    CurrentScene = nextScene;
                    core.ChangeScene(nextScene.CoreScene);
                    nextScene.Start();
                    nextScene = null;
                }
            }

            return(mes);
        }