示例#1
0
        protected void OnMouseButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (!Focused)
            {
                return;
            }

            gwenInput.ProcessMouseMessage(e);
        }
示例#2
0
        protected override void OnMouseDown(MouseButtonEventArgs e)
        {
            base.OnMouseDown(e);
            if (linerider.TrackFiles.TrackRecorder.Recording)
            {
                return;
            }
            var r = _input.ProcessMouseMessage(e);

            if (!r && (!Track.Animating || Track.Paused))
            {
                if (!Track.Paused && OpenTK.Input.Keyboard.GetState()[Key.D])
                {
                    var pos     = new Vector2d(e.X, e.Y) / Track.Zoom;
                    var gamepos = (ScreenPosition + pos);
                    _dragRider = Track.RiderRect.Contains((float)gamepos.X, (float)gamepos.Y);
                }
                if (!_dragRider)
                {
                    if (e.Button == MouseButton.Left)
                    {
                        if (_handToolOverride)
                        {
                            _handtool.OnMouseDown(new Vector2d(e.X, e.Y));
                        }
                        else
                        {
                            SelectedTool.OnMouseDown(new Vector2d(e.X, e.Y));
                        }
                    }
                    else if (e.Button == MouseButton.Right)
                    {
                        if (_handToolOverride)
                        {
                            _handtool.OnMouseRightDown(new Vector2d(e.X, e.Y));
                        }
                        else
                        {
                            SelectedTool.OnMouseRightDown(new Vector2d(e.X, e.Y));
                        }
                    }
                }
                if (e.Button != MouseButton.Right)
                {
                    UpdateCursor();
                }
            }
            else
            {
                Cursor = MouseCursor.Default;
            }
            Invalidate();
        }
示例#3
0
 protected override void OnMouseMove(OpenTK.Input.MouseMoveEventArgs e)
 {
     base.OnMouseMove(e);
     try
     {
         input.ProcessMouseMessage(e);
     }
     catch (Exception ex)
     {
         //sdl eats exceptions
         Console.WriteLine(ex.ToString());
         throw ex;
     }
 }
示例#4
0
        protected void OnMouseButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (!Focused)
            {
                return;
            }


            //GL.MatrixMode(MatrixMode.Projection);
            //GL.LoadIdentity();
            //GL.Ortho(-10, 10, -10, 10, -10, 10);

            //GLfloat m[16];
            //glGetFloatv(GL_PROJECTION_MATRIX, m);

            int[] selectBuffer = new int[BUFSIZE];              //This has to be redifined
            int   hits;

            int[] viewport = new int[4];

            if (e.Button == MouseButton.Left)
            {
                GL.GetInteger(GetPName.Viewport, viewport);
                GL.SelectBuffer(BUFSIZE, selectBuffer);
                GL.RenderMode(RenderingMode.Select);
                GL.InitNames();
                GL.PushName(0);
                GL.MatrixMode(MatrixMode.Projection);
                GL.PushMatrix();
                GL.LoadIdentity();
                UIntPtr Pixel = new UIntPtr();
                GL.ReadPixels(e.X, viewport[3] - e.Y, 1, 1, PixelFormat.Rgba, PixelType.UnsignedByte, ref Pixel);
                uint SelectedTriangle = SelectedTriangle = Pixel.ToUInt32();
                GL.Ortho(0, 3, 0, 3, 1, -1); // Bottom-left corner pixel has coordinate (0, 0)
                DrawSquares(GL.RenderMode(RenderingMode.Select));
                GL.MatrixMode(MatrixMode.Projection);
                GL.PopMatrix();
                GL.Flush();
                hits = GL.RenderMode(RenderingMode.Render);
                ProcessHits(hits, selectBuffer);
                SwapBuffers();
            }



            gwenInput.ProcessMouseMessage(e);
        }
示例#5
0
        public static void ProcessMouse(int oriX, int oriY)
        {
            EventArgs evnt    = null;
            var       pressed = false;

            prevMouseState = curMouseState;
            curMouseState  = Mouse.GetCursorState();
            Gwen.Input.InputHandler.HoveredControl = input.m_Canvas.GetControlAt(curMouseState.X - oriX, curMouseState.Y - oriY);
            foreach (var mouseCode in mouseCodes)
            {
                if (curMouseState[mouseCode] != prevMouseState[mouseCode])
                {
                    evnt = new MouseButtonEventArgs(curMouseState.X - oriX, curMouseState.Y - oriY, mouseCode, true);//last param bugged
                    //evnt = new MouseButtonEventArgs (curMouseState.X, curMouseState.Y, mouseCode,true);//last param bugged
                    if (curMouseState [mouseCode])
                    {
                        pressed = true;
                        Gwen.Input.InputHandler.MouseFocus = Gwen.Input.InputHandler.HoveredControl;
                        OnMouseDown?.Invoke((MouseButtonEventArgs)evnt);
                    }
                    else
                    {
                        OnMouseUp?.Invoke((MouseButtonEventArgs)evnt);
                    }
                }
            }
            Vector2 delta = MainWindow.lastPos - new Vector2(curMouseState.X, curMouseState.Y);

            if (Math.Abs(delta.X) > 0 || Math.Abs(delta.Y) > 0)
            {
                evnt = new MouseMoveEventArgs(curMouseState.X - oriX, curMouseState.Y - oriY, (int)delta.X, (int)delta.Y);
                OnMouseMove?.Invoke(evnt as MouseMoveEventArgs);
            }
            input.ProcessMouseMessage(evnt, pressed);
            MainWindow.lastPos = new Vector2(curMouseState.X, curMouseState.Y);
        }
        protected override void OnMouseDown(MouseButtonEventArgs e)
        {
            base.OnMouseDown(e);
            try
            {
                InputUtils.UpdateMouse(e.Mouse);
                if (linerider.IO.TrackRecorder.Recording)
                {
                    return;
                }
                var r = _input.ProcessMouseMessage(e);
                if (Canvas.GetOpenWindows().Count != 0)
                {
                    return;
                }

                if (!r && !Track.Playing)
                {
                    bool dragstart = false;
                    if (!Track.Paused &&
                        e.Button == MouseButton.Left &&
                        OpenTK.Input.Keyboard.GetState()[Key.D])
                    {
                        var pos     = new Vector2d(e.X, e.Y) / Track.Zoom;
                        var gamepos = (ScreenPosition + pos);
                        dragstart = Game.Rider.GetBounds(
                            Track.GetStart()).Contains(
                            gamepos.X,
                            gamepos.Y);
                        if (dragstart)
                        {
                            // 5 is arbitrary, but i assume that's a decent
                            // place to assume the user has done "work"
                            if (!Track.MoveStartWarned && Track.LineCount > 5)
                            {
                                var popup = PopupWindow.Create(
                                    "You're about to move the start position of the rider." +
                                    " This cannot be undone, and may drastically change how your track plays." +
                                    "\nAre you sure you want to do this?", "Warning", true, true);
                                popup.Dismissed += (o, args) =>
                                {
                                    if (popup.Result == DialogResult.OK)
                                    {
                                        Track.MoveStartWarned = true;
                                    }
                                };
                            }
                            else
                            {
                                _dragRider = dragstart;
                            }
                        }
                    }
                    if (!_dragRider && !dragstart)
                    {
                        if (e.Button == MouseButton.Left)
                        {
                            if (_handToolOverride)
                            {
                                HandTool.OnMouseDown(new Vector2d(e.X, e.Y));
                            }
                            else
                            {
                                SelectedTool.OnMouseDown(new Vector2d(e.X, e.Y));
                            }
                        }
                        else if (e.Button == MouseButton.Right)
                        {
                            if (_handToolOverride)
                            {
                                HandTool.OnMouseRightDown(new Vector2d(e.X, e.Y));
                            }
                            else
                            {
                                SelectedTool.OnMouseRightDown(new Vector2d(e.X, e.Y));
                            }
                        }
                        else if (e.Button == MouseButton.Middle)
                        {
                            _handToolOverride = true;
                            HandTool.OnMouseDown(new Vector2d(e.X, e.Y));
                        }
                    }
                    if (e.Button != MouseButton.Right)
                    {
                        UpdateCursor();
                    }
                }
                else
                {
                    Cursor = Cursors["default"];
                }
                Invalidate();
            }
            catch (Exception ex)
            {
                // SDL2 backend eats exceptions.
                // we have to manually crash.
                Program.Crash(ex, true);
                Close();
            }
        }
 void Mouse_ButtonDown(object sender, MouseButtonEventArgs args)
 {
     input.ProcessMouseMessage(args);
 }
示例#8
0
 protected override void OnMouseDown(MouseButtonEventArgs e)
 {
     base.OnMouseDown(e);
     try
     {
         InputUtils.UpdateMouse(e.Mouse);
         if (linerider.IO.TrackRecorder.Recording)
         {
             return;
         }
         var r = _input.ProcessMouseMessage(e);
         _uicursor = _input.MouseCaptured;
         if (Canvas.GetOpenWindows().Count != 0)
         {
             UpdateCursor();
             return;
         }
         if (!r)
         {
             InputUtils.ProcessMouseHotkeys();
             if (!Track.Playing)
             {
                 bool dragstart = false;
                 if (Track.Offset == 0 &&
                     e.Button == MouseButton.Left &&
                     InputUtils.Check(Hotkey.EditorMoveStart))
                 {
                     var gamepos = ScreenPosition + (new Vector2d(e.X, e.Y) / Track.Zoom);
                     dragstart = Game.Rider.GetBounds(
                         Track.GetStart()).Contains(
                         gamepos.X,
                         gamepos.Y);
                     if (dragstart)
                     {
                         // 5 is arbitrary, but i assume that's a decent
                         // place to assume the user has done "work"
                         if (!Track.MoveStartWarned && Track.LineCount > 5)
                         {
                             var popup = MessageBox.Show(Canvas,
                                                         "You're about to move the start position of the rider." +
                                                         " This cannot be undone, and may drastically change how your track plays." +
                                                         "\nAre you sure you want to do this?", "Warning", MessageBox.ButtonType.OkCancel);
                             popup.RenameButtons("I understand");
                             popup.Dismissed += (o, args) =>
                             {
                                 if (popup.Result == Gwen.DialogResult.OK)
                                 {
                                     Track.MoveStartWarned = true;
                                 }
                             };
                         }
                         else
                         {
                             _dragRider = dragstart;
                         }
                     }
                 }
                 if (!_dragRider && !dragstart)
                 {
                     if (e.Button == MouseButton.Left)
                     {
                         CurrentTools.SelectedTool.OnMouseDown(new Vector2d(e.X, e.Y));
                     }
                     else if (e.Button == MouseButton.Right)
                     {
                         CurrentTools.SelectedTool.OnMouseRightDown(new Vector2d(e.X, e.Y));
                     }
                 }
             }
             else if (CurrentTools.SelectedTool == CurrentTools.PencilTool && CurrentTools.PencilTool.DrawingScenery)
             {
                 if (e.Button == MouseButton.Left)
                 {
                     CurrentTools.PencilTool.OnMouseDown(new Vector2d(e.X, e.Y));
                 }
             }
         }
         UpdateCursor();
         Invalidate();
     }
     catch (Exception ex)
     {
         // SDL2 backend eats exceptions.
         // we have to manually crash.
         Program.Crash(ex, true);
         Close();
     }
 }
 protected override void OnMouseDown(MouseButtonEventArgs e)
 {
     input.ProcessMouseMessage(e);
     base.OnMouseDown(e);
 }