コード例 #1
0
ファイル: InputEventEmitter.cs プロジェクト: decoy/ConsoleBox
 private void EmitButtonChange(bool prev, bool next, MouseButton button, MouseStatus nextStatus)
 {
     if (!prev && next)
     {
         MouseButtonDown?.Invoke(sender, new MouseButtonEvent(LastMouseStatus, nextStatus, button));
     }
     else if (prev && !next)
     {
         var ev = new MouseButtonEvent(LastMouseStatus, nextStatus, button);
         MouseButtonUp?.Invoke(sender, ev);
         MouseClick?.Invoke(sender, ev);
     }
 }
コード例 #2
0
ファイル: InputEventEmitter.cs プロジェクト: decoy/ConsoleBox
        public void OnMouseChange(MouseStatus nextStatus)
        {
            // compare the two mouse statuses and emit appropriate events
            // TODO ... this should be more clever.  this could be handled easier with enum flags
            EmitButtonChange(LastMouseStatus.LeftButtonDown, nextStatus.LeftButtonDown, MouseButton.Left, nextStatus);
            EmitButtonChange(LastMouseStatus.MiddleButtonDown, nextStatus.MiddleButtonDown, MouseButton.Middle, nextStatus);
            EmitButtonChange(LastMouseStatus.RightButtonDown, nextStatus.RightButtonDown, MouseButton.Right, nextStatus);

            // move events
            if (LastMouseStatus.Position != nextStatus.Position)
            {
                MouseMove?.Invoke(sender, new MouseEvent(LastMouseStatus, nextStatus));
            }

            LastMouseStatus = nextStatus;
        }
コード例 #3
0
ファイル: InputEventEmitter.cs プロジェクト: decoy/ConsoleBox
        public void OnMouseWheel(MouseWheelDirection direction, MouseStatus nextStatus)
        {
            MouseWheel?.Invoke(sender, new MouseWheelEvent(LastMouseStatus, nextStatus, direction));

            OnMouseChange(nextStatus);
        }