/// <summary> /// Process all mouse events. This is the same as the StandaloneInputModule version except that /// it takes MouseState as a parameter, allowing it to be used for both Gaze and Mouse /// pointerss. /// </summary> private void ProcessMouseEvent(MouseState mouseData) { var pressed = mouseData.AnyPressesThisFrame(); var released = mouseData.AnyReleasesThisFrame(); var leftButtonData = mouseData.GetButtonState(PointerEventData.InputButton.Left).eventData; if (!UseMouse(pressed, released, leftButtonData.buttonData)) { return; } // Process the first mouse button fully ProcessMousePress(leftButtonData); ProcessMove(leftButtonData.buttonData); ProcessDrag(leftButtonData.buttonData); // Now process right / middle clicks ProcessMousePress(mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData); ProcessDrag(mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData.buttonData); ProcessMousePress(mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData); ProcessDrag(mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData.buttonData); if (!Mathf.Approximately(leftButtonData.buttonData.scrollDelta.sqrMagnitude, 0.0f)) { var scrollHandler = ExecuteEvents.GetEventHandler <IScrollHandler>(leftButtonData.buttonData.pointerCurrentRaycast.gameObject); ExecuteEvents.ExecuteHierarchy(scrollHandler, leftButtonData.buttonData, ExecuteEvents.scrollHandler); } }
private void ProcessMouseEvent() { MouseState mouseData = this.GetMousePointerEventData(); MouseButtonEventData leftButtonData = mouseData.GetButtonState(PointerEventData.InputButton.Left).eventData; this.currentFocusedGameObject = leftButtonData.buttonData.pointerCurrentRaycast.displayObject; // Process the first mouse button fully this.ProcessMousePress(leftButtonData); this.ProcessMove(leftButtonData.buttonData); this.ProcessDrag(leftButtonData.buttonData); // Now process right / middle clicks this.ProcessMousePress(mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData); this.ProcessDrag(mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData.buttonData); this.ProcessMousePress(mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData); this.ProcessDrag(mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData.buttonData); if (!Mathf.Approximately(leftButtonData.buttonData.scrollDelta.sqrMagnitude, 0.0f)) { DisplayObject scrollHandler = ExecuteEvents.GetEventHandler(leftButtonData.buttonData.pointerCurrentRaycast.displayObject, EventTriggerType.Scroll); ExecuteEvents.ExecuteHierarchy(scrollHandler, leftButtonData.buttonData, EventTriggerType.Scroll); } }
private void ProcessMouseEvent() { MouseState mouseData = this.GetMouseData(); MouseButtonEventData leftButtonData = mouseData.GetButtonState(InputData.InputButton.Left).eventData; this.ProcessMousePress(leftButtonData); this.ProcessMove(leftButtonData.buttonData); this.ProcessDrag(leftButtonData.buttonData); this.ProcessMousePress(mouseData.GetButtonState(InputData.InputButton.Right).eventData); this.ProcessDrag(mouseData.GetButtonState(InputData.InputButton.Right).eventData.buttonData); this.ProcessMousePress(mouseData.GetButtonState(InputData.InputButton.Middle).eventData); this.ProcessDrag(mouseData.GetButtonState(InputData.InputButton.Middle).eventData.buttonData); if (!Mathf.Approximately(leftButtonData.buttonData.scrollDelta.sqrMagnitude, 0.0f)) { IInteractive currentOverObj = leftButtonData.buttonData.currentRaycast.interactive; if (currentOverObj != null && this.pointerHandler != null) { this.pointerHandler.Invoke(currentOverObj, PointerType.Scroll, leftButtonData.buttonData); } } }
/// <summary> /// overwritten from the base version so we can use our custom /// </summary> /// <returns></returns> override protected MouseState GetGazePointerData() { MouseState state = base.GetGazePointerData(); var raycast = state.GetButtonState(PointerEventData.InputButton.Left).eventData.buttonData.pointerCurrentRaycast; //get custom press state PointerEventData.FramePressState pressState = GetGazeButtonState(raycast.gameObject); //set it state.SetButtonState(PointerEventData.InputButton.Left, pressState, state.GetButtonState(PointerEventData.InputButton.Left).eventData.buttonData); return(state); }
private void TriggerPress(MouseState mouseData_) { var buttonData = mouseData_.GetButtonState(PointerEventData.InputButton.Left).eventData; buttonData.buttonState = PointerEventData.FramePressState.PressedAndReleased; _pressCount++; }
protected void ProcessMouseEvent(int id) { MouseState mousePointerEventData = GetMousePointerEventData(id); MouseButtonEventData eventData = mousePointerEventData.GetButtonState(PointerEventData.InputButton.Left).eventData; ProcessMousePress(eventData); ProcessMove(eventData.buttonData); ProcessDrag(eventData.buttonData); ProcessMousePress(mousePointerEventData.GetButtonState(PointerEventData.InputButton.Right).eventData); ProcessDrag(mousePointerEventData.GetButtonState(PointerEventData.InputButton.Right).eventData.buttonData); ProcessMousePress(mousePointerEventData.GetButtonState(PointerEventData.InputButton.Middle).eventData); ProcessDrag(mousePointerEventData.GetButtonState(PointerEventData.InputButton.Middle).eventData.buttonData); if (!Mathf.Approximately(eventData.buttonData.scrollDelta.sqrMagnitude, 0f)) { GameObject eventHandler = ExecuteEvents.GetEventHandler <IScrollHandler>(eventData.buttonData.pointerCurrentRaycast.gameObject); ExecuteEvents.ExecuteHierarchy(eventHandler, eventData.buttonData, ExecuteEvents.scrollHandler); } }
private GestureEventData[] GetMouseEvents() { MouseState mouseData = GetMousePointerEventData(0); return(new GestureEventData[] { MouseToTouch(mouseData.GetButtonState(PointerEventData.InputButton.Left).eventData) }); }
private void processMouseEvent(MouseState mouseData) { var leftButtonData = mouseData.GetButtonState(PointerEventData.InputButton.Left).eventData; processMousePress(leftButtonData); ProcessMove(leftButtonData.buttonData); ProcessDrag(leftButtonData.buttonData); processMousePress(mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData); ProcessDrag(mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData.buttonData); processMousePress(mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData); ProcessDrag(mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData.buttonData); if (Mathf.Approximately(leftButtonData.buttonData.scrollDelta.sqrMagnitude, 0.0f) == false) { var scrollHandler = ExecuteEvents.GetEventHandler <IScrollHandler>(leftButtonData.buttonData.pointerCurrentRaycast.gameObject); ExecuteEvents.ExecuteHierarchy(scrollHandler, leftButtonData.buttonData, ExecuteEvents.scrollHandler); } }
/// <summary> /// <para>Iterate through all the different mouse events.</para> /// </summary> /// <param name="id">The mouse pointer Event data id to get.</param> protected void ProcessMouseEvent(int id) { MouseState pointerEventData = GetMousePointerEventData(id); MouseButtonEventData eventData = pointerEventData.GetButtonState(PointerEventData.InputButton.Left).eventData; m_CurrentFocusedGameObject = eventData.buttonData.pointerCurrentRaycast.gameObject; ProcessMousePress(eventData); ProcessMove(eventData.buttonData); ProcessDrag(eventData.buttonData); ProcessMousePress(pointerEventData.GetButtonState(PointerEventData.InputButton.Right).eventData); ProcessDrag(pointerEventData.GetButtonState(PointerEventData.InputButton.Right).eventData.buttonData); ProcessMousePress(pointerEventData.GetButtonState(PointerEventData.InputButton.Middle).eventData); ProcessDrag(pointerEventData.GetButtonState(PointerEventData.InputButton.Middle).eventData.buttonData); if (Mathf.Approximately(eventData.buttonData.scrollDelta.sqrMagnitude, 0.0f)) { return; } ExecuteEvents.ExecuteHierarchy <IScrollHandler>(ExecuteEvents.GetEventHandler <IScrollHandler>(eventData.buttonData.pointerCurrentRaycast.gameObject), eventData.buttonData, ExecuteEvents.scrollHandler); }
public void SimulateClick() { // Use the existing EventSystems input module input as the // input for our custom input module. m_InputOverride = EventSystem.current.currentInputModule.input; MouseState mousePointerEventData = GetMousePointerEventData(); MouseButtonEventData buttonState = mousePointerEventData.GetButtonState(PointerEventData.InputButton.Left).eventData; // Set the mouse button state to "PressedAndReleased" to indicate a mouse click occurred buttonState.buttonState = PointerEventData.FramePressState.PressedAndReleased; ProcessMousePress(buttonState); }
void GetClientMouseState(MouseState mouseData) { if (_client != null && ClusterHelper.Instance.UseInputEventPhase) { //Debug.Log("UpdateInputEvent"); ClusterHelper.Instance.UpdateInputEvent(); } if (_client != null && _mouseState != null) { CopyFromTo(_mouseState.buttonStateList[0], mouseData.GetButtonState(PointerEventData.InputButton.Left), isSendingPositionState, isSendingPressState); CopyFromTo(_mouseState.buttonStateList[1], mouseData.GetButtonState(PointerEventData.InputButton.Right), isSendingPositionState, isSendingPressState); CopyFromTo(_mouseState.buttonStateList[2], mouseData.GetButtonState(PointerEventData.InputButton.Middle), isSendingPositionState, isSendingPressState); #if FIX_DUP_RAYCAST ObjectSyncProfiler.BeginSample("RaycastAll"); RaycastAll(mouseData); ObjectSyncProfiler.EndSample("RaycastAll", true); #else var leftData = mouseData.GetButtonState(PointerEventData.InputButton.Left).eventData.buttonData; eventSystem.RaycastAll(leftData, m_RaycastResultCache); var raycast = FindFirstRaycast(m_RaycastResultCache); leftData.pointerCurrentRaycast = raycast; m_RaycastResultCache.Clear(); var rightData = mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData.buttonData; var middleData = mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData.buttonData; rightData.pointerCurrentRaycast = raycast; middleData.pointerCurrentRaycast = raycast; #endif } }
private void SimulateButtonState(PointerEventData.FramePressState state, PointerEventData.InputButton button) { // Use the existing EventSystems input module input as the // input for our custom input module. m_InputOverride = EventSystem.current.currentInputModule.input; MouseState mousePointerEventData = GetMousePointerEventData(); // Retrieve button state data for intended button MouseButtonEventData buttonState = mousePointerEventData.GetButtonState(button).eventData; // Set the mouse button state to required state buttonState.buttonState = state; ProcessMousePress(buttonState); }
public void Disable() { if (m_ProcessType == ProcessType.Default) { // Default return; } MouseState mouseData = GetMousePointerEventData(); MouseButtonEventData leftButtonData = mouseData.GetButtonState(PointerEventData.InputButton.Left).eventData; PointerEventData pointerEventData = leftButtonData.buttonData; // Press 中なら強制解除 if (pointerEventData.pointerPress != null) { ExecuteEvents.Execute(pointerEventData.pointerPress, pointerEventData, ExecuteEvents.pointerUpHandler); GameObject pointerUpHandler = ExecuteEvents.GetEventHandler <IPointerClickHandler>(pointerEventData.pointerCurrentRaycast.gameObject); // PointerClick and Drop events // if( pointerEventData.pointerPress == pointerUpHandler && pointerEventData.eligibleForClick ) // { // ExecuteEvents.Execute( pointerEventData.pointerPress, pointerEventData, ExecuteEvents.pointerClickHandler ) ; // } // else // if( pointerEventData.pointerDrag != null && pointerEventData.dragging == true ) // { // ExecuteEvents.ExecuteHierarchy( pointerEventData.pointerCurrentRaycast.gameObject, pointerEventData, ExecuteEvents.dropHandler ) ; // } pointerEventData.eligibleForClick = false; pointerEventData.pointerPress = null; pointerEventData.rawPointerPress = null; } if (pointerEventData.pointerDrag != null && pointerEventData.dragging == true) { ExecuteEvents.Execute(pointerEventData.pointerDrag, pointerEventData, ExecuteEvents.endDragHandler); pointerEventData.dragging = false; pointerEventData.pointerDrag = null; } // Hover 中なら強制解除 if (pointerEventData.pointerEnter != null) { HandlePointerExitAndEnter(pointerEventData, null); } m_Disable = true; }
private void FakeTouches() { MouseState mousePointerEventData = GetMousePointerEventData(0); MouseButtonEventData eventData = mousePointerEventData.GetButtonState(PointerEventData.InputButton.Left).eventData; if (eventData.PressedThisFrame()) { eventData.buttonData.delta = Vector2.zero; } ProcessTouchPress(eventData.buttonData, eventData.PressedThisFrame(), eventData.ReleasedThisFrame()); if (Input.GetMouseButton(0)) { ProcessMove(eventData.buttonData); ProcessDrag(eventData.buttonData); } }
public override void Process() { // Try to get pointer for this input module pointerEventData = new PointerEventData(EventSystem.current); GetPointerData(kMouseLeftId, out pointerEventData, true); pointerEventData.Reset(); pointerEventData.delta = Vector2.zero; pointerEventData.position = new Vector2(Screen.width * 0.5f, Screen.height * 0.5f); pointerEventData.scrollDelta = Vector2.zero; pointerEventData.button = PointerEventData.InputButton.Left; // Raycast pointer to canvas m_RaycastResultCache.Clear(); eventSystem.RaycastAll(pointerEventData, m_RaycastResultCache); pointerEventData.pointerCurrentRaycast = FindFirstRaycast(m_RaycastResultCache); PointerHitCanvas = m_RaycastResultCache.Count > 0; UpdatePointerWorldPosition(); // Process presses & events mouseState.SetButtonState(PointerEventData.InputButton.Left, GetPressState(), pointerEventData); MouseButtonEventData buttonState = mouseState.GetButtonState(PointerEventData.InputButton.Left).eventData; if (buttonState.PressedThisFrame()) { ButtonPress(buttonState.buttonData); } if (buttonState.ReleasedThisFrame()) { ButtonRelease(buttonState.buttonData); } ProcessMove(buttonState.buttonData); if (buttonHeld) { ProcessDrag(buttonState.buttonData); } }
void SendServerMouseState(MouseState mouseData) { if (_server != null) { _mouseState = _mouseState ?? new FDUObjectSync.MouseState(); _mouseState.buttonStateList.ForEach(buttonState_ => { var button = mouseData.GetButtonState((PointerEventData.InputButton)buttonState_.button); var buttonData = button.eventData.buttonData; var buttonState = button.eventData.buttonState; buttonState_.position = buttonData.position; buttonState_.delta = buttonData.delta; buttonState_.scrollDelta = buttonData.scrollDelta; buttonState_.buttonState = (FramePressState)buttonState; // normalize buttonState_.position = new Vector2( buttonState_.position.x / Screen.width, buttonState_.position.y / Screen.height); buttonState_.delta = new Vector2( buttonState_.delta.x / Screen.width, buttonState_.delta.y / Screen.height); buttonState_.scrollDelta = new Vector2( buttonState_.scrollDelta.x / Screen.width, buttonState_.scrollDelta.y / Screen.height); }); _server.SendState(_objectId, this); _server.FlushBuffer(); if (ClusterHelper.Instance.UseInputEventPhase) { //Debug.Log("SendEofInputEvent"); _server.SendEofInputEvent(); } } }
protected override MouseState GetMousePointerEventData(int id) { MouseState ret = base.GetMousePointerEventData(id); if (ControlMethod != CUIControlMethod.MOUSE && ControlMethod != CUIControlMethod.WORLD_MOUSE) { ret.SetButtonState(PointerEventData.InputButton.Left, CustomRayFramePressedState(), ret.GetButtonState(PointerEventData.InputButton.Left).eventData.buttonData); } return(ret); }
public static MouseButtonEventData GetInputButtonState(PointerEventData.InputButton button = PointerEventData.InputButton.Left) { return(inputState.GetButtonState(button).eventData); }
public override void Process() { if (eventSystem.currentSelectedGameObject != null) { ExecuteEvents.Execute(eventSystem.currentSelectedGameObject, GetBaseEventData(), ExecuteEvents.updateSelectedHandler); } PointerEventData eventData; GetPointerData(kMouseLeftId, out eventData, true); eventData.Reset(); eventData.scrollDelta = Input.mouseScrollDelta; if (graphicRaycaster) { graphicRaycaster.Raycast(eventData, m_RaycastResultCache); eventData.pointerCurrentRaycast = FindFirstRaycast(m_RaycastResultCache); m_RaycastResultCache.Clear(); } MouseState mouseState = new MouseState(); mouseState.SetButtonState(PointerEventData.InputButton.Left, StateForMouseButton(0), eventData); MouseButtonEventData buttonData = mouseState.GetButtonState(PointerEventData.InputButton.Left).eventData; PointerEventData pointerEvent = buttonData.buttonData; GameObject currentGO = pointerEvent.pointerCurrentRaycast.gameObject; // mouse pointer down if (buttonData.PressedThisFrame()) { pointerEvent.eligibleForClick = true; pointerEvent.delta = Vector2.zero; pointerEvent.pressPosition = pointerEvent.position; pointerEvent.pointerPressRaycast = pointerEvent.pointerCurrentRaycast; DeselectIfSelectionChanged(currentGO, pointerEvent); GameObject pressedGO = ExecuteEvents.ExecuteHierarchy(currentGO, pointerEvent, ExecuteEvents.pointerDownHandler); if (pressedGO == null) { pressedGO = ExecuteEvents.GetEventHandler <IPointerClickHandler>(currentGO); } pointerEvent.clickCount = 1; pointerEvent.pointerPress = pressedGO; pointerEvent.rawPointerPress = currentGO; pointerEvent.clickTime = Time.unscaledTime; } // mouse pointer up if (buttonData.ReleasedThisFrame()) { ExecuteEvents.Execute(pointerEvent.pointerPress, pointerEvent, ExecuteEvents.pointerUpHandler); GameObject pointerUpHandler = ExecuteEvents.GetEventHandler <IPointerClickHandler>(currentGO); if (pointerEvent.pointerPress == pointerUpHandler && pointerEvent.eligibleForClick) { ExecuteEvents.Execute(pointerEvent.pointerPress, pointerEvent, ExecuteEvents.pointerClickHandler); } if (currentGO != pointerEvent.pointerEnter) { HandlePointerExitAndEnter(pointerEvent, null); HandlePointerExitAndEnter(pointerEvent, currentGO); } } // scroll wheel if (!Mathf.Approximately(buttonData.buttonData.scrollDelta.sqrMagnitude, 0.0f)) { GameObject scrollHandler = ExecuteEvents.GetEventHandler <IScrollHandler>(buttonData.buttonData.pointerCurrentRaycast.gameObject); ExecuteEvents.ExecuteHierarchy(scrollHandler, buttonData.buttonData, ExecuteEvents.scrollHandler); } }
/// <summary> /// Process all mouse events. This is the same as the StandaloneInputModule version except that /// it takes MouseState as a parameter, allowing it to be used for both Gaze and Mouse /// pointerss. /// </summary> private void ProcessMouseEvent(MouseState mouseData) { var pressed = mouseData.AnyPressesThisFrame(); var released = mouseData.AnyReleasesThisFrame(); var leftButtonData = mouseData.GetButtonState(PointerEventData.InputButton.Left).eventData; if (!UseMouse(pressed, released, leftButtonData.buttonData)) return; // Process the first mouse button fully ProcessMousePress(leftButtonData); ProcessMove(leftButtonData.buttonData); ProcessDrag(leftButtonData.buttonData); // Now process right / middle clicks ProcessMousePress(mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData); ProcessDrag(mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData.buttonData); ProcessMousePress(mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData); ProcessDrag(mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData.buttonData); if (!Mathf.Approximately(leftButtonData.buttonData.scrollDelta.sqrMagnitude, 0.0f)) { var scrollHandler = ExecuteEvents.GetEventHandler<IScrollHandler>(leftButtonData.buttonData.pointerCurrentRaycast.gameObject); ExecuteEvents.ExecuteHierarchy(scrollHandler, leftButtonData.buttonData, ExecuteEvents.scrollHandler); } }
private void ProcessMouseEventForPC() { if (m_Disable == true) { return; } //---------------------------------- MouseState mouseData = GetMousePointerEventData(); bool pressed = mouseData.AnyPressesThisFrame(); bool released = mouseData.AnyReleasesThisFrame(); MouseButtonEventData leftButtonData = mouseData.GetButtonState(PointerEventData.InputButton.Left).eventData; if (leftButtonData.PressedThisFrame() == true) { m_LastPress = leftButtonData.buttonData.pointerCurrentRaycast.gameObject; // Debug.LogWarning( "LastPress設定:" + m_LastPress ) ; } //レイキャスト消失により Relese 状態になった場合の対応 bool isPressed = Input.GetMouseButton(0); if (isPressed != m_IsPressed) { // if( isPressed == false ) // { // Debug.LogWarning( "直判定で離された:" + leftButtonData.buttonState ) ; // } if (released == false && isPressed == false) { released = true; if (leftButtonData.buttonState == PointerEventData.FramePressState.NotChanged) { leftButtonData.buttonState = PointerEventData.FramePressState.Released; // Debug.LogWarning( "LastPress:" + m_LastPress ) ; leftButtonData.buttonData.pointerPress = m_LastPress; m_LastPress = null; } } m_IsPressed = isPressed; } // マウスオーバーに関してはマウスが動いていなくても取りたい ProcessHoverForPC(leftButtonData.buttonData); if (UseMouseForPC(pressed, released, leftButtonData.buttonData) == false) { // 何のイベントも無い return; } // Process the first mouse button fully ProcessMousePress(leftButtonData); // デフォルトでは途中でレイキャストが変わった場合のリリースがうまくいかないので改造版を使用する // ProcessMove( leftButtonData.buttonData ) ; ProcessDrag(leftButtonData.buttonData); // Now process right / middle clicks // ProcessMousePress( mouseData.GetButtonState( PointerEventData.InputButton.Right ).eventData ) ; // ProcessDrag( mouseData.GetButtonState( PointerEventData.InputButton.Right ).eventData.buttonData ) ; // ProcessMousePress( mouseData.GetButtonState( PointerEventData.InputButton.Middle ).eventData ) ; // ProcessDrag( mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData.buttonData ) ; if (Mathf.Approximately(leftButtonData.buttonData.scrollDelta.sqrMagnitude, 0.0f) == false) { GameObject scrollHandler = ExecuteEvents.GetEventHandler <IScrollHandler>(leftButtonData.buttonData.pointerCurrentRaycast.gameObject); ExecuteEvents.ExecuteHierarchy(scrollHandler, leftButtonData.buttonData, ExecuteEvents.scrollHandler); } }
public static bool CheckButtonState(this MouseState state, MouseButtons button) { return(state.GetButtonState(button) == ButtonState.Pressed); }