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