示例#1
0
        /// <summary>
        /// Handles SDL2's MOUSEMOTION event.
        /// </summary>
        private void OnMouseMotion(ref SDL_MouseMotionEvent evt)
        {
            if (!Ultraviolet.GetInput().EmulateMouseWithTouchInput&& evt.which == SDL_TOUCH_MOUSEID)
            {
                return;
            }

            SetMousePosition(evt.windowID, evt.x, evt.y);
            OnMoved(window, evt.x, evt.y, evt.xrel, evt.yrel);
        }
示例#2
0
        //处理鼠标移动的消息
        private static void HandleMouseMotionEvent(SDL_MouseMotionEvent mouseMotionEvent)
        {
            CefMouseEvent mouseEvent = new CefMouseEvent();

            mouseEvent.X = mouseMotionEvent.x;
            mouseEvent.Y = mouseMotionEvent.y;
            _host.SendMouseMoveEvent(mouseEvent, false);
            //这里暂不处理器modifier
            //mouseEvent.Modifiers=mouseMotionEvent.state.
            //return mouseEvent;
        }
        /// <summary>
        /// Handles SDL2's MOUSEMOTION event.
        /// </summary>
        private void OnMouseMotion(ref SDL_MouseMotionEvent evt)
        {
            if (!Ultraviolet.GetInput().EmulateMouseWithTouchInput&& evt.which == SDL_TOUCH_MOUSEID)
            {
                return;
            }

            this.window = Ultraviolet.GetPlatform().Windows.GetByID((int)evt.windowID);

            this.x = evt.x;
            this.y = evt.y;

            OnMoved(window, evt.x, evt.y, evt.xrel, evt.yrel);
        }
示例#4
0
 private void ProcessAnEvent(ref SDL_Event ev)
 {
     switch (ev.type)
     {
     case SDL_EventType.MouseMotion:
         if (!_hasAnInitialMouseMovementEventRegistered)
         {
             _hasAnInitialMouseMovementEventRegistered = true;
         }
         _gotMouseMotionEventThisUpdate = true;
         SDL_MouseMotionEvent mouseEvent = Unsafe.As <SDL_Event, SDL_MouseMotionEvent>(ref ev);
         _mouseLastPosition = new Vector2(mouseEvent.x, mouseEvent.y);
         _mouseLastVelocity = new Vector2(mouseEvent.xrel, mouseEvent.yrel);
         break;
     }
 }
示例#5
0
        static unsafe void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            IntPtr          window     = Sdl2Native.SDL_CreateWindow("Here is a pretty wacky title.", 50, 50, 1280, 720, SDL_WindowFlags.Shown | SDL_WindowFlags.Resizable | SDL_WindowFlags.OpenGL);
            var             windowInfo = OpenTK.Platform.Utilities.CreateSdl2WindowInfo(window);
            GraphicsContext gc         = new GraphicsContext(GraphicsMode.Default, windowInfo);

            gc.LoadAll();
            gc.MakeCurrent(windowInfo);

            while (true)
            {
                GL.ClearColor(0f, 0f, .75f, 1f);
                GL.Viewport(0, 0, 1280, 720);
                GL.Clear(ClearBufferMask.ColorBufferBit);
                Sdl2Native.SDL_PumpEvents();
                SDL_Event ev;
                while (Sdl2Native.SDL_PollEvent(&ev) != 0)
                {
                    if (ev.type == SDL_EventType.WindowEvent)
                    {
                        SDL_WindowEvent windowEvent = Unsafe.Read <SDL_WindowEvent>(&ev);
                        Console.WriteLine("Window event: " + windowEvent.@event);
                    }
                    else if (ev.type == SDL_EventType.MouseMotion)
                    {
                        SDL_MouseMotionEvent mme = Unsafe.Read <SDL_MouseMotionEvent>(&ev);
                        Console.WriteLine($"X: {mme.x}, Y: {mme.y}, State: {mme.state}");
                    }
                    else if (ev.type == SDL_EventType.Quit)
                    {
                        Sdl2Native.SDL_DestroyWindow(window);
                        return;
                    }
                    else
                    {
                        Console.WriteLine("Event: " + ev.type);
                    }
                }

                Sdl2Native.SDL_GL_SwapWindow(window);
                //gc.SwapBuffers();
            }
        }
示例#6
0
 internal static void OnMouseMotion(SDL_MouseMotionEvent motion)
 {
     MouseX += motion.xrel;
     MouseY += motion.yrel;
 }
示例#7
0
 public SdlMouseMotionEvent(SDL_MouseMotionEvent handle)
 {
     _handle = handle;
 }
示例#8
0
        /// <summary>
        /// 直接转换相关事件
        /// </summary>
        /// <param name="ev"></param>
        public static unsafe void HandleEvent(SDL_Event *ev)
        {
            if (_host == null)
            {
                return;
            }
            switch (ev->type)
            {
            case SDL_EventType.Quit:
                //Close();
                break;

            case SDL_EventType.Terminating:
                //Close();
                break;

            case SDL_EventType.WindowEvent:
                //SDL_WindowEvent windowEvent = Unsafe.Read<SDL_WindowEvent>(ev);
                //HandleWindowEvent(windowEvent);
                break;

            case SDL_EventType.KeyDown:
            case SDL_EventType.KeyUp:
                SDL_KeyboardEvent keyboardEvent = Unsafe.Read <SDL_KeyboardEvent>(ev);
                HandleKeyboardEvent(keyboardEvent);
                break;

            case SDL_EventType.TextEditing:
                break;

            case SDL_EventType.TextInput:
                SDL_TextInputEvent textInputEvent = Unsafe.Read <SDL_TextInputEvent>(ev);
                HandleTextInputEvent(textInputEvent);
                break;

            case SDL_EventType.KeyMapChanged:
                break;

            case SDL_EventType.MouseMotion:
                SDL_MouseMotionEvent mouseMotionEvent = Unsafe.Read <SDL_MouseMotionEvent>(ev);
                HandleMouseMotionEvent(mouseMotionEvent);
                break;

            case SDL_EventType.MouseButtonDown:
            case SDL_EventType.MouseButtonUp:
                SDL_MouseButtonEvent mouseButtonEvent = Unsafe.Read <SDL_MouseButtonEvent>(ev);
                HandleMouseButtonEvent(mouseButtonEvent);
                break;

            case SDL_EventType.MouseWheel:
                SDL_MouseWheelEvent mouseWheelEvent = Unsafe.Read <SDL_MouseWheelEvent>(ev);
                HandleMouseWheelEvent(mouseWheelEvent);
                break;

            case SDL_EventType.JoyAxisMotion:
                break;

            case SDL_EventType.JoyBallMotion:
                break;

            case SDL_EventType.JoyHatMotion:
                break;

            case SDL_EventType.JoyButtonDown:
                break;

            case SDL_EventType.JoyButtonUp:
                break;

            case SDL_EventType.JoyDeviceAdded:
                break;

            case SDL_EventType.JoyDeviceRemoved:
                break;

            case SDL_EventType.ControllerAxisMotion:
                break;

            case SDL_EventType.ControllerButtonDown:
                break;

            case SDL_EventType.ControllerButtonUp:
                break;

            case SDL_EventType.ControllerDeviceAdded:
                break;

            case SDL_EventType.ControllerDeviceRemoved:
                break;

            case SDL_EventType.ControllerDeviceRemapped:
                break;

            case SDL_EventType.FingerDown:
                break;

            case SDL_EventType.FingerUp:
                break;

            case SDL_EventType.FingerMotion:
                break;

            case SDL_EventType.DollarGesture:
                break;

            case SDL_EventType.DollarRecord:
                break;

            case SDL_EventType.MultiGesture:
                break;

            case SDL_EventType.ClipboardUpdate:
                break;

            case SDL_EventType.DropFile:
                break;

            case SDL_EventType.DropTest:
                break;

            case SDL_EventType.DropBegin:
                break;

            case SDL_EventType.DropComplete:
                break;

            case SDL_EventType.AudioDeviceAdded:
                break;

            case SDL_EventType.AudioDeviceRemoved:
                break;

            case SDL_EventType.RenderTargetsReset:
                break;

            case SDL_EventType.RenderDeviceReset:
                break;

            case SDL_EventType.UserEvent:
                break;

            case SDL_EventType.LastEvent:
                break;

            default:
                // Ignore
                break;
            }
        }