public static void Initialize(ECSWorld world) { if (initialized) { return; } if (world == null) { throw new ArgumentNullException(nameof(world), "The ECSWorld provided can not be null."); } if (!world.IsMainWorld) { throw new ArgumentException("The ECSWorld of the window needs to be the mainWorld", nameof(world)); } WindowInstance = Process.GetCurrentProcess().SafeHandle.DangerousGetHandle(); window = new Sdl2Window("ECS", 50, 50, 1280, 720, SDL_WindowFlags.Resizable, threadedProcessing: false); window.X = 50; window.Y = 50; window.Visible = true; window.MouseWheel += (x) => OnMouseWheel?.Invoke(x); window.MouseMove += (x) => OnMouseMove?.Invoke(x); window.MouseDown += (x) => OnMouseDown?.Invoke(x); window.KeyDown += (x) => OnKeyDown?.Invoke(x); window.Closed += () => OnWindowClose?.Invoke(); window.Resized += () => OnWindowResize?.Invoke(window.Width, window.Height); world.EarlyUpdate += PumpEvents; initialized = true; GraphicsContext.Initialize(world); }
static public void InvokeOnMouseWheel(OpenTK.Input.MouseWheelEventArgs e) { if (OnMouseWheel != null) { OnMouseWheel.Invoke(null, e); } }
private static bool HandleMouseEvent(NativeMouseEvent eventCode, MousePosition pos, int wheelDelta) { switch (eventCode) { case NativeMouseEvent.WM_MOUSEMOVE: OnMouseMove?.Invoke(pos); return(true); case NativeMouseEvent.WM_LBUTTONDOWN: OnMouseLeftDown?.Invoke(pos); return(true); case NativeMouseEvent.WM_LBUTTONUP: OnMouseLeftUp?.Invoke(pos); return(true); case NativeMouseEvent.WM_RBUTTONDOWN: OnMouseRightDown?.Invoke(pos); return(true); case NativeMouseEvent.WM_RBUTTONUP: OnMouseRightUp?.Invoke(pos); return(true); case NativeMouseEvent.WM_MOUSEWHEEL: OnMouseWheel?.Invoke(pos, wheelDelta); return(true); default: return(false); } }
IntPtr HookProcFunction(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode == 0) { MSLLHOOKSTRUCT mhs = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT)); var inwindow = Owner.MouseInWindow(mhs.pt.X, mhs.pt.Y); switch ((WM)wParam.ToInt32()) { case WM.MOUSEMOVE: if (inwindow) { OnMouseMove?.Invoke(Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).X, Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).Y, mhs.pt.X, mhs.pt.Y, Owner.GetMouseButtonConsole()); } OnGlobalMouseMove?.Invoke(mhs.pt.X, mhs.pt.Y, Owner.GetMouseButtonScreen()); break; case WM.LBUTTONDOWN: OnMouseDown?.Invoke(Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).X, Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).Y, mhs.pt.X, mhs.pt.Y, inwindow, MButton.Left); break; case WM.MBUTTONDOWN: OnMouseDown?.Invoke(Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).X, Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).Y, mhs.pt.X, mhs.pt.Y, inwindow, MButton.Center); break; case WM.RBUTTONDOWN: OnMouseDown?.Invoke(Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).X, Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).Y, mhs.pt.X, mhs.pt.Y, inwindow, MButton.Right); break; case WM.XBUTTONDOWN: OnMouseDown?.Invoke(Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).X, Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).Y, mhs.pt.X, mhs.pt.Y, inwindow, MButton.XBUTTON1 | MButton.XBUTTON2); break; case WM.LBUTTONUP: OnMouseUp?.Invoke(Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).X, Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).Y, mhs.pt.X, mhs.pt.Y, inwindow, MButton.Left); break; case WM.MBUTTONUP: OnMouseUp?.Invoke(Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).X, Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).Y, mhs.pt.X, mhs.pt.Y, inwindow, MButton.Center); break; case WM.RBUTTONUP: OnMouseUp?.Invoke(Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).X, Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).Y, mhs.pt.X, mhs.pt.Y, inwindow, MButton.Right); break; case WM.XBUTTONUP: OnMouseUp?.Invoke(Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).X, Owner.ToConsoleCoord(mhs.pt.X, mhs.pt.Y).Y, mhs.pt.X, mhs.pt.Y, inwindow, MButton.XBUTTON1 | MButton.XBUTTON2); break; case WM.MOUSEWHEEL: OnMouseWheel?.Invoke(GetWheelStateByData(mhs.mouseData), mhs.mouseData, mhs.pt.X, mhs.pt.Y, Owner.GetMouseButtonScreen()); break; default: break; } } return(WinApi.CallNextHookEx(hHook, nCode, wParam, lParam)); }
public override void ScrollWheel(NSEvent theEvent) { base.ScrollWheel(theEvent); if (OnMouseWheel != null) { OnMouseWheel.Invoke(this, theEvent); } ResetMouseClick(); System.Diagnostics.Debug.WriteLine("Mouse wheel " + theEvent.DeltaY); }
private void MouseWheel(float axisValue) { if (!canInputBeMade) { return; } if (!BuilderInWorldUtils.IsPointerOverUIElement()) { OnMouseWheel?.Invoke(axisValue); } }
private void MouseHook_OnMouseWheel(object sender, MouseWheelEventArgs e) { if (e.Delta == 0) { return; } var zoomIn = e.Delta > 0; OnMouseWheel?.Invoke(this, new Tuple <System.Windows.Point, bool>(_previousMousePosition, zoomIn)); }
internal override void GHook_MouseWheel(object sender, MouseEventArgs e) { if (!Loaded) { return; } var mx = e.X - Window.X; var my = e.Y - Window.Y; DxWindow.OnMouseWheel(DxWindow, DxWindow, e, new SharpDX.Point(mx, my)); OnMouseWheel?.Invoke(sender, e); }
private void MouseWheel(float axisValue) { if (!isEditModeActive) { return; } if (!canInputBeMade) { return; } if (!BIWUtils.IsPointerOverUIElement()) { OnMouseWheel?.Invoke(axisValue); } }
public int MouseHook(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0) { // Debug.Print("MouseHook called"); unchecked { int wParami = wParam.ToInt32(); //Marshal the data from the callback. var mouseData = (HookNativeDefinitions.MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(HookNativeDefinitions.MouseHookStruct)); var mouseButton = WM.GetMouseButton(wParam); int wheelDelta = 0; if (mouseButton == MouseButton.None && wParami == WM.MOUSEWHEEL) { wheelDelta = WM.GetWheelDDelta(mouseData.mouseData); } if (wParami == WM.MOUSEMOVE) { if (OnMouseMove != null) { OnMouseMove(mouseData.pt.x, mouseData.pt.y); } else { // mouse move is disabled ignore event } } else if (wParami == WM.MOUSEWHEEL && OnMouseWheel != null) { OnMouseWheel?.Invoke(wheelDelta, mouseData.pt.x, mouseData.pt.y); } else if (OnMouseButton != null) { OnMouseButton?.Invoke(mouseButton, mouseData.pt.x, mouseData.pt.y); } } } return(HookNativeDefinitions.CallNextHookEx(MouseHookHandle, nCode, wParam, lParam)); }
private void SetMouseWheelDelta(float axisValue, int axisDirection) { OnMouseWheel?.Invoke(axisValue); lastMouseWheelTime = Time.unscaledTime; lastMouseWheelAxisDirection = axisDirection; }
LRESULT WndProc(HWND hwnd, WM msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM.CLOSE: OnClose?.Invoke(); if (DestroyWhenClose == null || DestroyWhenClose()) { User32.DestroyWindow(hwnd); } return(0); case WM.ENABLE: OnEnable?.Invoke(wParam); break; case WM.SHOWWINDOW: OnShow?.Invoke(wParam); break; case WM.DESTROY: OnDestroy?.Invoke(); return(0); case WM.MOUSEMOVE: OnMouseMove?.Invoke(lParam.LowWord, lParam.HiWord); return(0); case WM.LBUTTONDOWN: OnMouseLeftDown?.Invoke(lParam.LowWord, lParam.HiWord); return(0); case WM.LBUTTONUP: OnMouseLeftUp?.Invoke(lParam.LowWord, lParam.HiWord); return(0); case WM.LBUTTONDBLCLK: OnMouseLeftDoubleClicked?.Invoke(); return(0); case WM.RBUTTONDOWN: OnMouseRightDown?.Invoke(lParam.LowWord, lParam.HiWord); return(0); case WM.RBUTTONUP: OnMouseRightUp?.Invoke(lParam.LowWord, lParam.HiWord); return(0); case WM.MBUTTONDOWN: OnMouseMiddleDown?.Invoke(lParam.LowWord, lParam.HiWord); return(0); case WM.MBUTTONUP: OnMouseMiddleUp?.Invoke(lParam.LowWord, lParam.HiWord); return(0); case WM.MOUSEWHEEL: OnMouseWheel?.Invoke(wParam.HiWord); return(0); case WM.RESIZE: OnResize?.Invoke(lParam.LowWord, lParam.HiWord); return(0); case WM.PAINT: { var ps = default(PAINTSTRUCT); User32.BeginPaint(hwnd, ref ps); OnPaint?.Invoke(); User32.EndPaint(hwnd, ref ps); } return(0); } return(User32.DefWindowProcW(hwnd, msg, wParam, lParam)); }
static void InitEvents() { Log.Info("Registering window events"); window.RenderFrame += (sender, e) => { timer.Tick(); RenderState.SetupViewport(); OnRender?.Invoke(); State?.Render(); window.SwapBuffers(); FinalizeGLResources(); }; window.UpdateFrame += (sender, e) => { OnUpdate?.Invoke(e.Time); var state = State; if (state != null) { state.Update(e.Time); if (state.Closed) { State = null; } } if (State == null) { Kill(); } }; window.KeyDown += (sender, e) => { var key = (Key)e.Key; if (e.IsRepeat) { OnKeyRepeat?.Invoke(key); State?.KeyRepeat(key); } else { OnKeyDown?.Invoke(key); State?.KeyDown(key); } if (e.Key == OpenTK.Input.Key.F4 && e.Modifiers.HasFlag(OpenTK.Input.KeyModifiers.Alt)) { window.Close(); } }; window.KeyUp += (sender, e) => { OnKeyUp?.Invoke((Key)e.Key); State?.KeyUp((Key)e.Key); }; window.KeyPress += (sender, e) => { OnCharInput?.Invoke(e.KeyChar); State?.CharInput(e.KeyChar); }; window.MouseDown += (sender, e) => { OnMouseDown?.Invoke((MouseButton)e.Button, Mouse.Position); State?.MouseDown((MouseButton)e.Button, Mouse.Position); }; window.MouseUp += (sender, e) => { OnMouseUp?.Invoke((MouseButton)e.Button, Mouse.Position); State?.MouseUp((MouseButton)e.Button, Mouse.Position); }; window.MouseMove += (sender, e) => { OnMouseMove?.Invoke(Mouse.Position); State?.MouseMove(Mouse.Position); }; window.MouseWheel += (sender, e) => { OnMouseWheel?.Invoke(e.DeltaPrecise); State?.MouseWheel(e.DeltaPrecise); }; window.Resize += (sender, e) => { OpenTK.Graphics.OpenGL.GL.Viewport(0, 0, Width, Height); }; }
public void MouseWheel(int screenX, int screenY, int delta) { mouseX = screenX; mouseY = screenY; OnMouseWheel?.Invoke(this, CreateMouseEventArgs(screenX, screenY, delta)); }
private void SetMouseWheelDelta(int delta) { OnMouseWheel?.Invoke(delta); lastMouseWheelTime = Time.unscaledTime; lastMouseWheelDelta = delta; }
private void HookMouseCallback(HookData hookData) { MouseEventInformation info = MouseEventInformation.Get(hookData); int mx = info.X; int my = info.Y; MouseButtons button = info.Button; // 마우스 다운 if (info.IsMouseDown) { if (IsDoubleClick(info)) { info = info.ToDobuleClickMouseEventInformation(); } OnMouseDown?.Invoke(mx, my, button); if (info.Clicks == 2) { m_DoubleButton |= info.Button; } if (info.Clicks == 1) { m_SingleButton |= button; } } // 마우스 업 if (info.IsMouseUp) { OnMouseUp?.Invoke(mx, my, button); // 마우스 클릭 if ((m_SingleButton & button) != MouseButtons.None) { OnMouseClick?.Invoke(mx, my, button); m_SingleButton &= ~button; } // 마우스 더블 클릭 if ((m_DoubleButton & button) != MouseButtons.None) { OnMouseDoubleClick?.Invoke(mx, my, button); m_DoubleButton &= ~button; } if (info.Clicks == 2) { m_PreviousClickedButton = MouseButtons.None; m_PreviousClickedTime = 0; m_PreviousClickedX = m_DefaultPositionXY; m_PreviousClickedY = m_DefaultPositionXY; } if (info.Clicks == 1) { m_PreviousClickedButton = info.Button; m_PreviousClickedTime = info.Timestamp; m_PreviousClickedX = mx; m_PreviousClickedY = my; } } // 마우스 스크롤 if (info.IsMouseWheelScrolled) { OnMouseWheel?.Invoke(mx, my, button, info.Delta > 0 ? 1 : -1); } // 마우스 이동 if (IsMoved(mx, my)) { m_PreviousX = mx; m_PreviousY = my; OnMouseMove?.Invoke(mx, my, button); } // 마우스 드래그 if ((m_SingleButton & MouseButtons.Left) != MouseButtons.None) { if (m_DragStartPositionX == m_DefaultPositionXY && m_DragStartPositionY == m_DefaultPositionXY) { m_DragStartPositionX = mx; m_DragStartPositionY = my; } // 마우스 드래그 스타트 if (m_dragMode == false) { bool isXDragging = Math.Abs(mx - m_DragStartPositionX) > m_SystemDragX; bool isYDragging = Math.Abs(my - m_DragStartPositionY) > m_SystemDragY; m_dragMode = isXDragging || isYDragging; if (m_dragMode == true) { OnMouseDragStart?.Invoke(mx, my, button); } } } else { m_DragStartPositionX = m_DefaultPositionXY; m_DragStartPositionY = m_DefaultPositionXY; // 마우스 드래그 엔드 if (m_dragMode == true) { OnMouseDragEnd?.Invoke(mx, my, button); m_dragMode = false; } } }
public virtual void MouseWheel(double delta) { OnMouseWheel?.Invoke(delta); }