public static void Pop() { if (stackTgt.Count == 0) return; Target = stackTgt.Last(); drawOffset = stackOffset.Last(); stackTgt.RemoveAt(stackTgt.Count - 1); stackOffset.RemoveAt(stackOffset.Count - 1); }
public virtual void OnDrag(InputState input, int button, PxVector deltaFrame, PxVector deltaStart) { }
//EVENTS public virtual bool InterceptMouse(PxVector mousePos) { return false; }
public override bool OnScroll(int scroll) { Size += new PxVector(0, scroll * 4); td.Text = "Size: " + Size.Y; return true; }
public override void OnDrag(InputState input, int button, PxVector deltaFrame, PxVector deltaStart) { Position += deltaFrame; }
public override bool InterceptMouse(PxVector mousePos) { return true; }
public virtual PxVector WindowToClientSize(PxVector inp) { return inp; }
public virtual PxVector ClientToWindowSize(PxVector inp) { return inp; }
public static void PushSwap(RenderTarget2D target, PxVector offset) { Push(); Target = target; drawOffset = offset; }
public void ProcessInputEvents(InputState input, bool mouseOver) { if (UIManager.dragForm == null) { { var swap = mouseOverLastFrame; mouseOverLastFrame = mouseOverThisFrame; mouseOverThisFrame = swap; mouseOverThisFrame.Clear(); } if (mouseOver) frame.Dive((ctl) => ctl.ScreenRect.Contains(input.MousePosition), (ctl) => ctl.InterceptMouse(input.MousePosition - ctl.ScreenRect.Position), (ctl) => mouseOverThisFrame.Add(ctl)); foreach (UIControl ctl in mouseOverLastFrame) if (!mouseOverThisFrame.Contains(ctl)) ctl.OnMouseLeave(input); foreach (UIControl ctl in mouseOverThisFrame) if (!mouseOverLastFrame.Contains(ctl)) ctl.OnMouseEnter(input); for (int i = 0; i < 3; i++) { foreach (UIControl ctl in mouseOverThisFrame) { if (input.MouseReleased(i)) ctl.OnMouseUp(input, i); if (input.MousePressed(i)) { ctl.OnMouseDown(input, i); if (ctl.IsDraggable(i)) { UIManager.dragForm = this; dragControl = ctl; dragStart = dragLast = input.MousePosition; dragButton = i; // todo: maybe abort rest of non-drag phase? } } } } // set kb focus if (mouseOver && input.MousePressed(0)) { UIControl focus = mouseOverThisFrame.Count == 0 ? window : mouseOverThisFrame.Last(); while (focus != null) { if (focus.CanTakeKeyboardFocus(input)) break; focus = focus.Parent; } keyboardFocus = focus; } if (input.scrollWheel != 0) foreach (UIControl ctl in mouseOverThisFrame) { if (ctl.OnScroll(input.scrollWheel)) break; else if (ctl == mouseOverThisFrame.Last()) { UIControl ctc = ctl.Parent; while (ctc != null) { if (ctc.OnScroll(input.scrollWheel)) break; ctc = ctc.Parent; } } } } else if (UIManager.dragForm == this) { if (input.MouseReleased(dragButton)) { dragControl.OnMouseUp(input, dragButton); dragControl = null; // don't hold an old ref UIManager.dragForm = null; // and of course } else if (input.MousePosition != dragLast) { dragControl.OnDrag(input, dragButton, input.MousePosition - dragLast, input.MousePosition - dragStart); dragLast = input.MousePosition; } } if (Focused) { // keyboard if (keyboardFocus == null) keyboardFocus = window; UIControl focus = keyboardFocus; while (focus != null && input.pressedQueue.Count > 0) { focus.OnKeyDown(input); focus = focus.Parent; } } }
public override void AddOffset(PxVector offset) { DrawBatch.drawOffset += offset; }
public WindowBase() { MinimumSize = new PxVector(160, 160); MaximumSize = new PxVector(99999, 99999); }