Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 static public void InvokeOnMouseWheel(OpenTK.Input.MouseWheelEventArgs e)
 {
     if (OnMouseWheel != null)
     {
         OnMouseWheel.Invoke(null, e);
     }
 }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
 private void MouseWheel(float axisValue)
 {
     if (!canInputBeMade)
     {
         return;
     }
     if (!BuilderInWorldUtils.IsPointerOverUIElement())
     {
         OnMouseWheel?.Invoke(axisValue);
     }
 }
Ejemplo n.º 7
0
        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);
        }
    }
Ejemplo n.º 10
0
        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));
        }
Ejemplo n.º 11
0
 private void SetMouseWheelDelta(float axisValue, int axisDirection)
 {
     OnMouseWheel?.Invoke(axisValue);
     lastMouseWheelTime          = Time.unscaledTime;
     lastMouseWheelAxisDirection = axisDirection;
 }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
Archivo: Events.cs Proyecto: kuviman/Q
 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);
     };
 }
Ejemplo n.º 14
0
 public void MouseWheel(int screenX, int screenY, int delta)
 {
     mouseX = screenX;
     mouseY = screenY;
     OnMouseWheel?.Invoke(this, CreateMouseEventArgs(screenX, screenY, delta));
 }
Ejemplo n.º 15
0
 private void SetMouseWheelDelta(int delta)
 {
     OnMouseWheel?.Invoke(delta);
     lastMouseWheelTime  = Time.unscaledTime;
     lastMouseWheelDelta = delta;
 }
Ejemplo n.º 16
0
Archivo: Mouse.cs Proyecto: nchos88/SOA
        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;
                }
            }
        }
Ejemplo n.º 17
0
 public virtual void MouseWheel(double delta)
 {
     OnMouseWheel?.Invoke(delta);
 }