public LoadingReaderSceneInfo(User user, ILoadingScreen loadingScreen, WaitableTask <UserEncounter> encounter) { User = user; LoadingScreen = loadingScreen; Encounter = encounter; Encounter.AddOnCompletedListener(EncounterRetrieved); }
public void ConfirmStartingMenuScene(UserEncounter userEncounter, ILoadingScreen loadingScreen, MenuArea menuArea) { UserEncounter = userEncounter; LoadingScreen = loadingScreen; MenuArea = menuArea; ConfirmationPopup.ShowConfirmation(ExitSceneWithEncounter, ExitConfirmationTitle, ExitConfirmationDescription, "EXIT", "CANCEL"); }
public virtual void ConfirmStartingMenuScene(User user, ILoadingScreen loadingScreen, MenuArea menuArea) { User = user; LoadingScreen = loadingScreen; MenuArea = menuArea; ConfirmationPopup.ShowConfirmation(ExitScene, ExitConfirmationTitle, ExitConfirmationDescription); }
public void StartMenuScene(UserEncounter userEncounter, ILoadingScreen loadingScreen, MenuArea menuArea) { ImageHolder.BeginHoldingData(); var categories = GetMenuEncountersInfo(userEncounter); var menuSceneInfo = new LoadingMenuSceneInfo(userEncounter.User, loadingScreen, menuArea, categories); MenuSceneStarter.StartScene(menuSceneInfo); }
public LoadingMenuSceneInfo(User user, ILoadingScreen loadingScreen, MenuArea menuArea, WaitableTask <IMenuEncountersInfo> menuEncountersInfo) { User = user; LoadingScreen = loadingScreen; MenuArea = menuArea; MenuEncountersInfo = menuEncountersInfo; MenuEncountersInfo.AddOnCompletedListener(CategoriesRetrieved); }
public SingleSceneLoader(ILoadingScreen loadingScreen) { this.loadingScreen = loadingScreen; //todo дабы избежать утечек памяти, необходимо либо отписаться, либо быть синглтоном SceneManager.sceneLoaded += OnSceneLoaded; loadingScreen.AtOpeningEnd += AtOpeningEnd; loadingScreen.AtClosingEnd += AtClosingEnd; }
public void StartEncounter(User user, ILoadingScreen loadingScreen, WaitableTask <IMenuEncountersInfo> encounters, int recordNumber) { loadingScreen.Show(); ImageHolder.BeginHoldingData(); var encounter = GetEncounter(user, encounters, recordNumber); var loadingSceneInfo = new LoadingReaderSceneInfo(user, loadingScreen, encounter); SceneStarter.StartScene(loadingSceneInfo); }
protected override void OnAppWillBoot() { Application.targetFrameRate = TargetFrameRate; Screen.sleepTimeout = SleepTimeout; if (loadingScreenWrapper != null) { loadingScreen = loadingScreenWrapper.GetComponent <ILoadingScreen>(); } loadingScreen?.SetVersion(Application.version); ShowLoadingScreen(); base.OnAppWillBoot(); }
public DefaultRenderPipeline( IGraphicsBlit graphicsBlit, IRenderTargetBackBufferUtilities renderTargetBackBufferUtilities, IProfiler profiler, ILoadingScreen loadingScreen, [FromGame] IEngineHook[] engineHooks) { _graphicsBlit = graphicsBlit; _renderTargetBackBufferUtilities = renderTargetBackBufferUtilities; _profiler = profiler; _loadingScreen = loadingScreen; _engineHooks = engineHooks; _standardRenderPasses = new List <IRenderPass>(); _postProcessingRenderPasses = new List <IRenderPass>(); _transientStandardRenderPasses = new List <IRenderPass>(); _transientPostProcessingRenderPasses = new List <IRenderPass>(); _renderPass = null; _isFirstRenderPass = false; }
/// <summary> /// Initialises the class. /// </summary> public void Init() { gameManager = GameManager.Instance; loadingScreenUI = GameManager.Instance.LoadingScreen.GetComponent <ILoadingScreen>(); }
public LoadingEngine(ILoadingScreen loadingScreen) { m_loadingScreen = loadingScreen; Clear(); }
public void Render(IGameContext gameContext, IRenderContext renderContext) { try { renderContext.Render(gameContext); // NOTE: We MUST clear the depth buffer because OpenGL will not do it for us. renderContext.GraphicsDevice.Clear( ClearOptions.DepthBuffer, Microsoft.Xna.Framework.Color.Transparent, renderContext.GraphicsDevice.Viewport.MaxDepth, 0); _primary = _renderTargetBackBufferUtilities.UpdateRenderTarget(_primary, renderContext); _secondary = _renderTargetBackBufferUtilities.UpdateRenderTarget(_secondary, renderContext); if (_primary == null || _secondary == null) { // These are null if the window is minimized or invalid, in which case we don't // render anything anyway. return; } var standardRenderPasses = _standardRenderPasses.ToArray(); var postProcessingRenderPasses = _postProcessingRenderPasses.ToArray(); IRenderPass previousPass = null; IRenderPass nextPass = null; IEntity[] entities = null; ILoadingScreen loadingScreen = null; if (gameContext.World == null) { loadingScreen = _loadingScreen; } else { entities = gameContext.World.GetEntitiesForWorld(gameContext.Hierarchy).ToArray(); } #if !DISABLE_PIPELINE_TARGETS renderContext.PushRenderTarget(_primary); #endif for (var i = 0; i < standardRenderPasses.Length; i++) { var pass = standardRenderPasses[i]; using (_profiler.Measure("r-" + pass.GetType().Name)) { _isFirstRenderPass = previousPass == null; _renderPass = pass; SetupRenderPassViewport(renderContext, pass); pass.BeginRenderPass(gameContext, renderContext, previousPass, null); previousPass = pass; RenderPass(gameContext, renderContext, pass, entities, loadingScreen); if (i < standardRenderPasses.Length - 1) { nextPass = standardRenderPasses[i + 1]; } else if (_transientStandardRenderPasses.Count > 0) { nextPass = _transientStandardRenderPasses[0]; } else if (postProcessingRenderPasses.Length > 0) { nextPass = postProcessingRenderPasses[0]; } else if (_transientPostProcessingRenderPasses.Count > 0) { nextPass = _transientPostProcessingRenderPasses[0]; } else { nextPass = null; } pass.EndRenderPass(gameContext, renderContext, nextPass); } } var loop = 100; while (_transientStandardRenderPasses.Count > 0 && loop-- >= 0) { var transientStandardRenderPasses = _transientStandardRenderPasses.ToArray(); _transientStandardRenderPasses.Clear(); for (var i = 0; i < transientStandardRenderPasses.Length; i++) { var pass = transientStandardRenderPasses[i]; using (_profiler.Measure("r-" + pass.GetType().Name)) { _isFirstRenderPass = previousPass == null; _renderPass = pass; SetupRenderPassViewport(renderContext, pass); pass.BeginRenderPass(gameContext, renderContext, previousPass, null); previousPass = pass; RenderPass(gameContext, renderContext, pass, entities, loadingScreen); if (i < transientStandardRenderPasses.Length - 1) { nextPass = transientStandardRenderPasses[i + 1]; } else if (_transientStandardRenderPasses.Count > 0) { nextPass = _transientStandardRenderPasses[0]; } else if (postProcessingRenderPasses.Length > 0) { nextPass = postProcessingRenderPasses[0]; } else if (_transientPostProcessingRenderPasses.Count > 0) { nextPass = _transientPostProcessingRenderPasses[0]; } else { nextPass = null; } pass.EndRenderPass(gameContext, renderContext, nextPass); } } } if (loop < 0) { throw new InvalidOperationException( "Exceeded the number of AppendTransientRenderPass iterations (100). Ensure you " + "are not unconditionally calling AppendTransientRenderPass within another render pass."); } #if !DISABLE_PIPELINE_TARGETS renderContext.PopRenderTarget(); #endif if (postProcessingRenderPasses.Length == 0 && _transientPostProcessingRenderPasses.Count == 0) { // Blit the primary render target to the backbuffer and return. #if !DISABLE_PIPELINE_TARGETS _graphicsBlit.Blit(renderContext, _primary); #endif return; } var currentSource = _primary; var currentDest = _secondary; #if !DISABLE_PIPELINE_TARGETS renderContext.PushRenderTarget(currentDest); #endif for (var i = 0; i < postProcessingRenderPasses.Length; i++) { var pass = postProcessingRenderPasses[i]; using (_profiler.Measure("r-" + pass.GetType().Name)) { _isFirstRenderPass = previousPass == null; _renderPass = pass; pass.BeginRenderPass(gameContext, renderContext, previousPass, currentSource); previousPass = pass; if (i < postProcessingRenderPasses.Length - 1) { nextPass = postProcessingRenderPasses[i + 1]; } else if (_transientPostProcessingRenderPasses.Count > 0) { nextPass = _transientPostProcessingRenderPasses[0]; } else { nextPass = null; } pass.EndRenderPass(gameContext, renderContext, nextPass); var temp = currentSource; currentSource = currentDest; currentDest = temp; #if !DISABLE_PIPELINE_TARGETS renderContext.PopRenderTarget(); renderContext.PushRenderTarget(currentDest); #endif // NOTE: This does not clear the new destination render target; it is expected that // post-processing effects will fully overwrite the destination. } } loop = 100; while (_transientPostProcessingRenderPasses.Count > 0 && loop-- >= 0) { var transientPostProcessingRenderPasses = _transientPostProcessingRenderPasses.ToArray(); _transientPostProcessingRenderPasses.Clear(); for (var i = 0; i < transientPostProcessingRenderPasses.Length; i++) { var pass = transientPostProcessingRenderPasses[i]; using (_profiler.Measure("r-" + pass.GetType().Name)) { _isFirstRenderPass = previousPass == null; _renderPass = pass; pass.BeginRenderPass(gameContext, renderContext, previousPass, currentSource); previousPass = pass; if (i < transientPostProcessingRenderPasses.Length - 1) { nextPass = transientPostProcessingRenderPasses[i + 1]; } else if (_transientPostProcessingRenderPasses.Count > 0) { nextPass = _transientPostProcessingRenderPasses[0]; } else { nextPass = null; } pass.EndRenderPass(gameContext, renderContext, nextPass); var temp = currentSource; currentSource = currentDest; currentDest = temp; #if !DISABLE_PIPELINE_TARGETS renderContext.PopRenderTarget(); renderContext.PushRenderTarget(currentDest); #endif // NOTE: This does not clear the new destination render target; it is expected that // post-processing effects will fully overwrite the destination. } } } if (loop < 0) { throw new InvalidOperationException( "Exceeded the number of AppendTransientRenderPass iterations (100). Ensure you " + "are not unconditionally calling AppendTransientRenderPass within another render pass."); } #if !DISABLE_PIPELINE_TARGETS renderContext.PopRenderTarget(); _graphicsBlit.Blit(renderContext, currentSource); #endif } finally { _renderPass = null; _isFirstRenderPass = false; } }
private void RenderPass(IGameContext gameContext, IRenderContext renderContext, IRenderPass renderPass, IEntity[] entities, ILoadingScreen loadingScreen) { if (!renderPass.SkipWorldRenderBelow && gameContext.World != null) { gameContext.World.RenderBelow(gameContext, renderContext); } if (gameContext.World == null && loadingScreen != null) { loadingScreen.Render(gameContext, renderContext); } if (!renderPass.SkipEntityRender && entities != null) { foreach (var entity in entities.OfType <IPrerenderableEntity>()) { entity.Prerender(gameContext, renderContext); } renderContext.PostPreRender(gameContext); foreach (var entity in entities) { entity.Render(gameContext, renderContext); } } else { renderContext.PostPreRender(gameContext); } if (!renderPass.SkipWorldRenderAbove && gameContext.World != null) { gameContext.World.RenderAbove(gameContext, renderContext); } if (!renderPass.SkipEngineHookRender) { foreach (var hook in _engineHooks) { hook.Render(gameContext, renderContext); } } }
public void StartEncounter(User user, ILoadingScreen loadingScreen, int recordNumber) { var encounters = MenuEncountersReader.GetMenuEncountersInfo(user); StartEncounter(user, loadingScreen, encounters, recordNumber); }
public abstract WaitableTask <User> InitialLogin(ILoadingScreen loadingScreen);