/// <summary> /// <para>Return the current MouseState.</para> /// </summary> /// <param name="id"></param> protected VirtualPointerInput.MouseState GetMousePointerEventData(int id, Vector3 mousePos) { PointerEventData data1; bool pointerData = this.GetPointerData(-1, out data1, true); data1.Reset(); if (pointerData) { data1.position = (Vector2)mousePos; } Vector2 mousePosition = (Vector2)mousePos; data1.delta = mousePosition - data1.position; data1.position = mousePosition; data1.scrollDelta = Input.mouseScrollDelta; data1.button = PointerEventData.InputButton.Left; this.eventSystem.RaycastAll(data1, this.m_RaycastResultCache); RaycastResult firstRaycast = BaseInputModule.FindFirstRaycast(this.m_RaycastResultCache); data1.pointerCurrentRaycast = firstRaycast; this.m_RaycastResultCache.Clear(); PointerEventData data2; this.GetPointerData(-2, out data2, true); this.CopyFromTo(data1, data2); data2.button = PointerEventData.InputButton.Right; PointerEventData data3; this.GetPointerData(-3, out data3, true); this.CopyFromTo(data1, data3); data3.button = PointerEventData.InputButton.Middle; this.m_MouseState.SetButtonState(PointerEventData.InputButton.Left, VirtualPointerInput.StateForMouseButton(0), data1); this.m_MouseState.SetButtonState(PointerEventData.InputButton.Right, VirtualPointerInput.StateForMouseButton(1), data2); this.m_MouseState.SetButtonState(PointerEventData.InputButton.Middle, VirtualPointerInput.StateForMouseButton(2), data3); return(this.m_MouseState); }
/// <summary> /// <para>Process the drag for the current frame with the given pointer event.</para> /// </summary> /// <param name="pointerEvent"></param> protected virtual void ProcessDrag(PointerEventData pointerEvent) { bool flag = pointerEvent.IsPointerMoving(); if (flag && (Object)pointerEvent.pointerDrag != (Object)null && (!pointerEvent.dragging && VirtualPointerInput.ShouldStartDrag(pointerEvent.pressPosition, pointerEvent.position, (float)this.eventSystem.pixelDragThreshold, pointerEvent.useDragThreshold))) { ExecuteEvents.Execute <IBeginDragHandler>(pointerEvent.pointerDrag, (BaseEventData)pointerEvent, ExecuteEvents.beginDragHandler); pointerEvent.dragging = true; } if (!pointerEvent.dragging || !flag || !((Object)pointerEvent.pointerDrag != (Object)null)) { return; } if ((Object)pointerEvent.pointerPress != (Object)pointerEvent.pointerDrag) { ExecuteEvents.Execute <IPointerUpHandler>(pointerEvent.pointerPress, (BaseEventData)pointerEvent, ExecuteEvents.pointerUpHandler); pointerEvent.eligibleForClick = false; pointerEvent.pointerPress = (GameObject)null; pointerEvent.rawPointerPress = (GameObject)null; } ExecuteEvents.Execute <IDragHandler>(pointerEvent.pointerDrag, (BaseEventData)pointerEvent, ExecuteEvents.dragHandler); }