/// <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); }
//处理鼠标移动的消息 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); }
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; } }
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(); } }
internal static void OnMouseMotion(SDL_MouseMotionEvent motion) { MouseX += motion.xrel; MouseY += motion.yrel; }
public SdlMouseMotionEvent(SDL_MouseMotionEvent handle) { _handle = handle; }
/// <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; } }