public override uint MouseWheel(MouseEventArgs e, GL_ControlBase control) { uint var = 0; foreach (IEditableObject obj in GetObjects()) { var |= obj.MouseWheel(e, control); } foreach (AbstractGlDrawable obj in StaticObjects) { var |= obj.MouseWheel(e, control); } if ((SelectionTransformAction != NoAction || CurrentAction != null)) { if (WinInput.Keyboard.IsKeyDown(WinInput.Key.LeftCtrl)) { SelectionTransformAction.UpdateMousePos(e.Location); CurrentAction?.UpdateMousePos(e.Location); var |= REDRAW; } else { SelectionTransformAction.ApplyScrolling(e.Location, e.Delta); CurrentAction?.ApplyScrolling(e.Location, e.Delta); var |= REDRAW | NO_CAMERA_ACTION; var &= ~REPICK; } } return(var); }
public override void Draw(GL_ControlLegacy control, Pass pass) { foreach (IEditableObject obj in GetObjects()) { if (obj.Visible) { control.LimitPickingColors(obj.GetPickableSpan()); obj.Draw(control, pass, this); } } control.UnlimitPickingColors(); foreach (AbstractGlDrawable obj in StaticObjects) { if (obj.Visible) { obj.Draw(control, pass); } } if (pass == Pass.OPAQUE) { SelectionTransformAction.Draw(control); CurrentAction?.Draw(control); } }
public override void MarginScroll(MarginScrollEventArgs e, GL_ControlBase control) { if (SelectionTransformAction != NoAction || CurrentAction != null) { SelectionTransformAction.ApplyMarginScrolling(e.Location, e.AmountX, e.AmountY); CurrentAction?.ApplyMarginScrolling(e.Location, e.AmountX, e.AmountY); } }
public override uint MouseMove(MouseEventArgs e, Point lastMousePos, GL_ControlBase control) { uint var = 0; foreach (IEditableObject obj in GetObjects()) { var |= obj.MouseMove(e, lastMousePos, control); } foreach (AbstractGlDrawable obj in StaticObjects) { var |= obj.MouseMove(e, lastMousePos, control); } if (SelectionTransformAction != NoAction || CurrentAction != null) { SelectionTransformAction.UpdateMousePos(e.Location); CurrentAction?.UpdateMousePos(e.Location); var |= REDRAW | NO_CAMERA_ACTION; var &= ~REPICK; } else { if (e.Button == MouseButtons.Left && WinInput.Keyboard.IsKeyDown(WinInput.Key.LeftAlt)) { if (WinInput.Keyboard.IsKeyDown(WinInput.Key.LeftShift)) { Hovered?.Deselect(HoveredPart, control); } else { Hovered?.Select(HoveredPart, control); } SelectionChanged?.Invoke(this, new EventArgs()); var |= NO_CAMERA_ACTION | FORCE_REENTER; } var |= REPICK; } return(var); }
public override uint MouseUp(MouseEventArgs e, GL_ControlBase control) { TransformChangeInfos transformChangeInfos = new TransformChangeInfos(new List <TransformChangeInfo>()); uint var = 0; if (SelectionTransformAction != NoAction && SelectionTransformAction.IsApplyOnRelease()) { foreach (IEditableObject obj in GetObjects()) { obj.ApplyTransformActionToSelection(SelectionTransformAction, ref transformChangeInfos); } var |= REDRAW_PICKING | FORCE_REENTER; AddTransformToUndo(transformChangeInfos); EndUndoCollection(); SelectionTransformAction = NoAction; } else if (CurrentAction != null) { CurrentAction?.Apply(); CurrentAction = null; var |= REDRAW_PICKING; AddTransformToUndo(transformChangeInfos); } foreach (AbstractGlDrawable obj in StaticObjects) { var |= obj.MouseUp(e, control); } foreach (IEditableObject obj in GetObjects()) { var |= obj.MouseUp(e, control); } return(var); }
public override uint KeyDown(KeyEventArgs e, GL_ControlBase control, bool isRepeat) { TransformChangeInfos transformChangeInfos = new TransformChangeInfos(new List <TransformChangeInfo>()); uint var = 0; bool selectionHasChanged = false; if (!isRepeat) { if ((SelectionTransformAction != NoAction || CurrentAction != null)) { SelectionTransformAction.KeyDown(e); CurrentAction?.KeyDown(e); var = NO_CAMERA_ACTION | REDRAW; } else { if (e.KeyData == KS_Focus) { BoundingBox box = BoundingBox.Default; foreach (IEditableObject obj in GetObjects()) { obj.GetSelectionBox(ref box); } if (box != BoundingBox.Default) { control.CameraTarget = box.GetCenter(); } var = REDRAW_PICKING; } else if (e.KeyData == KS_Undo) { Undo(); var = REDRAW_PICKING; } else if (e.KeyData == KS_Redo) { Redo(); var = REDRAW_PICKING; } else if (e.KeyData == KS_Hide) { foreach (IEditableObject obj in GetObjects()) { if (obj.IsSelected()) { obj.Visible = false; } } var = REDRAW_PICKING; } else if (e.KeyData == KS_UnHide) { foreach (IEditableObject obj in GetObjects()) { if (obj.IsSelected()) { obj.Visible = true; } } var = REDRAW_PICKING; } else if (e.KeyData == KS_SnapSelected) { SnapAction action = new SnapAction(); foreach (IEditableObject obj in GetObjects()) { obj.ApplyTransformActionToSelection(action, ref transformChangeInfos); } var = REDRAW_PICKING; } else if (e.KeyData == KS_ResetRotation) { ResetRot action = new ResetRot(); foreach (IEditableObject obj in GetObjects()) { obj.ApplyTransformActionToSelection(action, ref transformChangeInfos); } var = REDRAW_PICKING; } else if (e.KeyData == KS_ResetScale) { ResetScale action = new ResetScale(); foreach (IEditableObject obj in GetObjects()) { obj.ApplyTransformActionToSelection(action, ref transformChangeInfos); } var = REDRAW_PICKING; } else if (e.KeyData == KS_DeSelectAll) { foreach (IEditableObject obj in GetObjects()) { obj.DeselectAll(control); } selectionHasChanged = true; var = REDRAW; } else if (e.KeyData == KS_SelectAll) { if (multiSelect) { foreach (IEditableObject obj in GetObjects()) { obj.SelectAll(control); } selectionHasChanged = true; } var = REDRAW; } } } foreach (IEditableObject obj in GetObjects()) { var |= obj.KeyDown(e, control, isRepeat); } foreach (AbstractGlDrawable obj in StaticObjects) { var |= obj.KeyDown(e, control, isRepeat); } if (selectionHasChanged) { UpdateSelection(var); } AddTransformToUndo(transformChangeInfos); return(var); }