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);
        }
Example #5
0
 public LoadingMenuSceneInfo(User user, ILoadingScreen loadingScreen, MenuArea menuArea, WaitableTask <IMenuEncountersInfo> menuEncountersInfo)
 {
     User               = user;
     LoadingScreen      = loadingScreen;
     MenuArea           = menuArea;
     MenuEncountersInfo = menuEncountersInfo;
     MenuEncountersInfo.AddOnCompletedListener(CategoriesRetrieved);
 }
Example #6
0
        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();
        }
Example #9
0
 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;
 }
Example #10
0
 /// <summary>
 /// Initialises the class.
 /// </summary>
 public void Init()
 {
     gameManager     = GameManager.Instance;
     loadingScreenUI = GameManager.Instance.LoadingScreen.GetComponent <ILoadingScreen>();
 }
Example #11
0
 public LoadingEngine(ILoadingScreen loadingScreen)
 {
     m_loadingScreen = loadingScreen;
         Clear();
 }
Example #12
0
        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;
            }
        }
Example #13
0
        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);
        }
Example #15
0
 public abstract WaitableTask <User> InitialLogin(ILoadingScreen loadingScreen);