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(); } }
/// <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); } }
/// <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); }