예제 #1
0
        public void Run()
        {
            // Main game loop
            try
            {
                var timer = new Clock();

                while (window.IsOpen)
                {
                    window.DispatchEvents();

                    // Clear the previous frame
                    window.Clear(new Color(0xe9, 0xe9, 0xe9));

                    // Update, not sure extent of logic to do in this class
                    applicationManager.OnUpdate(0.016f);

                    // Draw, not sure extent of logic to do in this class
                    applicationManager.OnRender(window);

                    // Display updated frame
                    window.Display();
                }
            }
            catch (Exception e)
            {
                // Log the error
                Debug.WriteLine($"Application '{ActiveApplication.DisplayName}' exited with exception\n{e.InnerException}");

                // Cleanup the application & perform recovery where possible
                if (ActiveApplication.OnException())
                {
                    applicationManager.SetActiveApplication(ActiveApplication);
                }
                else
                {
                    applicationManager.SetActiveApplication(ActiveApplication);
                }

                Run();
            }
        }