Beispiel #1
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }