private void OnMouseInputEvent(Vector2 pixelPosition, H1MouseButton button, InputEventType type, float value = 0.0f)
        {
            // the mouse wheel event are still received when the mouse cursor is out of the control boundaries. discard the event in this case
            if (type == InputEventType.Wheel && !Control.IsMouseOver)
            {
                return;
            }

            // the mouse event series has been interrupted because out of the window
            if (type == InputEventType.Up && !m_MouseButtonCurrentlyDown[(int)button])
            {
                return;
            }

            m_CurrentMousePosition = NormalizeScreenPosition(pixelPosition);

            var mouseInputEvent = new MouseInputEvent {
                Type = type, MouseButton = button, Value = value
            };

            m_MouseInputEvents.Add(mouseInputEvent);

            if (type != InputEventType.Wheel)
            {
                var buttonId = (int)button;
                m_MouseButtonCurrentlyDown[buttonId] = type == InputEventType.Down;
                HandleMouseMovingEvents(buttonId, m_CurrentMousePosition, InputEventTypeToMouseState(type));
            }
        }
 // pressed is trigger!!!!
 public bool IsMouseButtonPressed(H1MouseButton mouseButton)
 {
     return(!m_MouseButtonsPrevious[(int)mouseButton] && m_MouseButtons[(int)mouseButton]);
 }
 public bool IsMouseButtonReleased(H1MouseButton mouseButton)
 {
     return(m_MouseButtonsPrevious[(int)mouseButton] && !m_MouseButtons[(int)mouseButton]);
 }
 public bool IsMouseButtonDown(H1MouseButton mouseButton)
 {
     return(m_MouseButtons[(int)mouseButton]);
 }