Exemple #1
0
        void GLControl_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            Vector2 NewPosition = new Vector2(e.X, e.Y);
            Vector2 Delta       = NewPosition - LastPosition;

            if (Delta.Length > 0f)
            {
                StartedClick = false;
            }

            if (!KeyboardHelper.CtrlDown() && !KeyboardHelper.ShiftDown() && !KeyboardHelper.AltDown())
            {
                if (e.Button == System.Windows.Forms.MouseButtons.Left)
                {
                    if (!IsRollOnly)
                    {
                        Vector2 Angles = new Vector2(-Delta.X, -Delta.Y);
                        //Angles.Y = 0;
                        Angles = Angles / 180f / 4f * (float)Math.PI;
                        Camera.Orbit(Angles);
                    }
                    else
                    {
                        float Angle = -(Delta.X + Delta.Y) / 180f / 4f * (float)Math.PI;
                        Camera.Roll(Angle);
                    }
                }
                else if (e.Button == System.Windows.Forms.MouseButtons.Middle)
                {
                    Camera.PanPixels(new Vector2(-Delta.X, Delta.Y));
                }
            }

            if (!StartedClick)
            {
                MouseMove?.Invoke(Camera.GetRayThroughPixel(NewPosition), e);
            }

            LastPosition = NewPosition;
        }