internal Draggable(Rectangle initialPosition, float clampOverscan, Func<Vector2, bool> handleAreaCheck, string cursorTexturePath = CURSOR_TEXTURE, float cursorHotSpotX = CURSOR_HOT_SPOT_X, float cursorHotSpotY = CURSOR_HOT_SPOT_Y) { this.rect = initialPosition; this.clampOverscan = clampOverscan; this.handleAreaCheck = handleAreaCheck; this.cursorTexturePath = cursorTexturePath; this.cursorHotSpot = new Vector2(cursorHotSpotX, cursorHotSpotY); }
internal Toolbar(Mode mode = Mode.TOOLBAR, Toolbar parentToolbar = null, RelativePosition preferredRelativePosition = RelativePosition.DEFAULT) { this.mode = mode; this.parentToolbar = parentToolbar; this.relativePosition = preferredRelativePosition; visibleButtons = new VisibleButtons(buttons, isEffectivelyUserVisible); autoHideUnimportantButtonAlpha.a = 0.4f; rect = new Rectangle(new Rect(DEFAULT_X, DEFAULT_Y, DEFAULT_WIDTH, float.MinValue)); if (mode == Mode.TOOLBAR) { dropdownMenuButton = Button.createToolbarDropdown(); dropdownMenuButton.OnClick += (e) => toggleDropdownMenu(); buttons.Add(dropdownMenuButton); draggable = new Draggable(rect, PADDING, (pos) => !dropdownMenuButtonContains(pos) && !resizable.HandleRect.Contains(pos)); resizable = new Resizable(rect, PADDING, (pos) => !dropdownMenuButtonContains(pos)); draggable.OnDrag += (e) => { resizable.Enabled = !draggable.Dragging; toolbarDrag(); }; resizable.OnDrag += (e) => { draggable.Enabled = !resizable.Dragging; toolbarResize(); }; CursorGrabbing.Instance.add(draggable); CursorGrabbing.Instance.add(resizable); CursorGrabbing.Instance.add(this); ToolbarManager.InternalInstance.OnCommandAdded += updateVisibleButtons; } else { showBorder = parentToolbar.showBorder; useKSPSkin_ = parentToolbar.UseKSPSkin; } }
internal Rect getRect(Button button) { Rect rect = new Rect(float.MinValue, float.MinValue, float.MinValue, float.MinValue); bool done = false; calculateButtonPositions((b, pos) => { if (!done && b.Equals(button)) { rect = new Rect(pos.x - PADDING, pos.y - PADDING, b.Size.x, b.Size.y); done = true; } }); return rect; }
private void hookButtonOrderDraggables(bool enabled) { if (enabled) { calculateButtonPositions((button, pos) => { if (!button.Equals(dropdownMenuButton)) { Rectangle buttonRect = new Rectangle(new Rect(rect.x + pos.x, rect.y + pos.y, button.Size.x, button.Size.y)); Draggable draggable = new Draggable(buttonRect, 0, null); draggable.Enabled = true; draggable.OnDrag += buttonDrag; buttonOrderDraggables.Add(draggable, buttonRect); } }); buttonOrderDropMarker = new DropMarker(); } else { foreach (Draggable d in buttonOrderDraggables.Keys) { d.OnDrag -= buttonDrag; } buttonOrderDraggables.Clear(); buttonOrderDropMarker = null; } draggedButton = null; }
internal Resizable(Rectangle initialPosition, float clampOverscan, Func<Vector2, bool> handleAreaCheck) : base(initialPosition, clampOverscan, handleAreaCheck, CURSOR_TEXTURE, CURSOR_HOT_SPOT_X, CURSOR_HOT_SPOT_Y) { }
internal Toolbar(Mode mode = Mode.TOOLBAR, Toolbar parentToolbar = null) { this.mode = mode; this.parentToolbar = parentToolbar; autoHideUnimportantButtonAlpha.a = 0.4f; rect = new Rectangle(new Rect(DEFAULT_X, DEFAULT_Y, DEFAULT_WIDTH, float.MinValue)); if (mode == Mode.TOOLBAR) { dropdownMenuButton = Button.createToolbarDropdown(); dropdownMenuButton.OnClick += (e) => toggleDropdownMenu(); buttons.Add(dropdownMenuButton); setupConfigureVisibleButtonsButton(); draggable = new Draggable(rect, PADDING, (pos) => !dropdownMenuButtonContains(pos) && !resizable.HandleRect.Contains(pos)); resizable = new Resizable(rect, PADDING, (pos) => !dropdownMenuButtonContains(pos)); draggable.OnDrag += (e) => { resizable.Enabled = !draggable.Dragging; toolbarDrag(); }; resizable.OnDrag += (e) => { draggable.Enabled = !resizable.Dragging; toolbarResize(); }; CursorGrabbing.Instance.add(draggable); CursorGrabbing.Instance.add(resizable); CursorGrabbing.Instance.add(this); } else { showBorder = parentToolbar.showBorder; useKSPSkin_ = parentToolbar.UseKSPSkin; } }