/// <returns>true to cancel</returns> protected virtual bool OnExitRequested() { if (ExitRequested) { return(false); } bool?response = null; UpdateScheduler.Add(delegate { response = Exiting?.Invoke() == true; }); //wait for a potentially blocking response while (!response.HasValue) { Thread.Sleep(1); } if (response.Value) { return(true); } Exit(); return(false); }
protected override void LoadGame(BaseGame game) { //delay load until we have a size. if (Size == Vector2.Zero) { UpdateScheduler.Add(delegate { LoadGame(game); }); return; } base.LoadGame(game); }
private void window_ClientSizeChanged(object sender, EventArgs e) { if (Window.WindowState == WindowState.Minimized) { return; } var size = Window.ClientSize; UpdateScheduler.Add(delegate { //set base.Size here to avoid the override below, which would cause a recursive loop. base.Size = new Vector2(size.Width, size.Height); }); }
private void window_ClientSizeChanged(object sender, EventArgs e) { if (Window.WindowState == WindowState.Minimized) { return; } var size = Window.ClientSize; //When minimizing, there will be an "size zero, but WindowState not Minimized" state. if (size.IsEmpty) { return; } UpdateScheduler.Add(delegate { //set base.Size here to avoid the override below, which would cause a recursive loop. base.Size = new Vector2(size.Width, size.Height); }); }