Ejemplo n.º 1
0
        /// <summary>Runs this instance.</summary>
        public void Run()
        {
            #region Awake()

            InputSystem.Awake();
            SceneSystem.Awake();
            PhysicsSystem.Awake();
            RenderSystem.Awake();

            #endregion

            #region Start()

            InputSystem.Start();
            SceneSystem.Start();
            PhysicsSystem.Start();
            RenderSystem.Start();

            #endregion

            while (IsRunning)
            {
                Setting.Time.SyncFixedDeltaTime();

                if (Setting.Time.IsNewFrame())
                {
                    Setting.Time.UpdateTimeStep();

                    for (int i = 0; i < Setting.Time.MaximunAllowedTimeStep; i++)
                    {
                        #region BeforeUpdate()

                        InputSystem.BeforeUpdate();
                        SceneSystem.BeforeUpdate();
                        PhysicsSystem.BeforeUpdate();
                        RenderSystem.BeforeUpdate();

                        #endregion

                        #region Update()

                        InputSystem.Update();
                        SceneSystem.Update();
                        PhysicsSystem.Update();
                        RenderSystem.Update();

                        #endregion

                        #region AfterUpdate()

                        InputSystem.AfterUpdate();
                        SceneSystem.AfterUpdate();
                        PhysicsSystem.AfterUpdate();
                        RenderSystem.AfterUpdate();

                        #endregion
                    }

                    #region FixedUpdate()

                    InputSystem.FixedUpdate();
                    SceneSystem.FixedUpdate();
                    PhysicsSystem.FixedUpdate();
                    RenderSystem.FixedUpdate();

                    #endregion

                    #region DispatchEvents()

                    InputSystem.DispatchEvents();
                    SceneSystem.DispatchEvents();
                    PhysicsSystem.DispatchEvents();
                    RenderSystem.DispatchEvents();

                    #endregion

                    Setting.Time.CounterFrames();
                }

                Setting.Time.UpdateFixedTime();
            }

            #region Exit()

            InputSystem.Exit();
            SceneSystem.Exit();
            PhysicsSystem.Exit();
            RenderSystem.Exit();

            #endregion
        }