/// <summary> /// Set's this object to it's default, unused state. /// </summary> public void Reset() { lastFrameDelta = ButtonDeltaState.NoChange; m_IsDown = false; m_InternalData.Reset(); }
/// <summary> /// Set's this object to it's default, unused state. /// </summary> public void Reset() { lastFrameDelta = ButtonDeltaState.NoChange; m_IsDown = false; m_ImplementationData.Reset(); }
/// <summary> /// Call this on each frame in order to reset properties that detect whether or not a certain condition was met this frame. /// </summary> public void OnFrameFinished() { lastFrameDelta = ButtonDeltaState.NoChange; }
private void ProcessMouseButton(ButtonDeltaState mouseButtonChanges, PointerEventData eventData) { var currentOverGo = eventData.pointerCurrentRaycast.gameObject; if ((mouseButtonChanges & ButtonDeltaState.Pressed) != 0) { eventData.eligibleForClick = true; eventData.delta = Vector2.zero; eventData.dragging = false; eventData.pressPosition = eventData.position; eventData.pointerPressRaycast = eventData.pointerCurrentRaycast; var selectHandlerGO = ExecuteEvents.GetEventHandler <ISelectHandler>(currentOverGo); // If we have clicked something new, deselect the old thing // and leave 'selection handling' up to the press event. if (selectHandlerGO != eventSystem.currentSelectedGameObject) { eventSystem.SetSelectedGameObject(null, eventData); } // search for the control that will receive the press. // if we can't find a press handler set the press // handler to be what would receive a click. var newPressed = ExecuteEvents.ExecuteHierarchy(currentOverGo, eventData, ExecuteEvents.pointerDownHandler); // We didn't find a press handler, so we search for a click handler. if (newPressed == null) { newPressed = ExecuteEvents.GetEventHandler <IPointerClickHandler>(currentOverGo); } var time = Time.unscaledTime; if (newPressed == eventData.lastPress && ((time - eventData.clickTime) < clickSpeed)) { ++eventData.clickCount; } else { eventData.clickCount = 1; } eventData.clickTime = time; eventData.pointerPress = newPressed; eventData.rawPointerPress = currentOverGo; // Save the drag handler for drag events during this mouse down. eventData.pointerDrag = ExecuteEvents.GetEventHandler <IDragHandler>(currentOverGo); if (eventData.pointerDrag != null) { ExecuteEvents.Execute(eventData.pointerDrag, eventData, ExecuteEvents.initializePotentialDrag); } } if ((mouseButtonChanges & ButtonDeltaState.Released) != 0) { ExecuteEvents.Execute(eventData.pointerPress, eventData, ExecuteEvents.pointerUpHandler); var pointerUpHandler = ExecuteEvents.GetEventHandler <IPointerClickHandler>(currentOverGo); if (eventData.pointerPress == pointerUpHandler && eventData.eligibleForClick) { ExecuteEvents.Execute(eventData.pointerPress, eventData, ExecuteEvents.pointerClickHandler); } else if (eventData.dragging && eventData.pointerDrag != null) { ExecuteEvents.ExecuteHierarchy(currentOverGo, eventData, ExecuteEvents.dropHandler); ExecuteEvents.Execute(eventData.pointerDrag, eventData, ExecuteEvents.endDragHandler); } eventData.eligibleForClick = eventData.dragging = false; eventData.pointerPress = eventData.rawPointerPress = eventData.pointerDrag = null; } }
private void ProcessButton(ButtonDeltaState mouseButtonChanges, ref MLInputDeviceEventData eventData) { var currentOverGo = eventData.pointerCurrentRaycast.gameObject; if (mouseButtonChanges == ButtonDeltaState.Pressed) { eventData.eligibleForClick = true; eventData.dragging = false; eventData.pointerPressRaycast = eventData.pointerCurrentRaycast; eventData.position = _mainCamera.WorldToScreenPoint(eventData.pointerCurrentRaycast.worldPosition); eventData.pressPosition = eventData.position; var selectHandlerGO = ExecuteEvents.GetEventHandler <ISelectHandler>(currentOverGo); // If we have clicked something new, deselect the old thing // and leave 'selection handling' up to the press event. if (selectHandlerGO != eventSystem.currentSelectedGameObject) { eventSystem.SetSelectedGameObject(null, eventData); } // search for the control that will receive the press. // if we can't find a press handler set the press // handler to be what would receive a click. var newPressed = ExecuteEvents.ExecuteHierarchy(currentOverGo, eventData, ExecuteEvents.pointerDownHandler); // We didn't find a press handler, so we search for a click handler. if (newPressed == null) { newPressed = ExecuteEvents.GetEventHandler <IPointerClickHandler>(currentOverGo); } var time = Time.unscaledTime; if (newPressed == eventData.lastPress && ((time - eventData.clickTime) < _triggerClickSpeed)) { ++eventData.clickCount; } else { eventData.clickCount = 1; } eventData.clickTime = time; eventData.pointerPress = newPressed; eventData.rawPointerPress = currentOverGo; // Save the drag handler for drag events during this mouse down. var canPointerDrag = ExecuteEvents.GetEventHandler <IDragHandler>(currentOverGo); if (canPointerDrag != null && (newPressed == null || canPointerDrag == newPressed)) { eventData.pointerDrag = canPointerDrag; ExecuteEvents.Execute(eventData.pointerDrag, eventData, ExecuteEvents.initializePotentialDrag); } } else if (mouseButtonChanges == ButtonDeltaState.Released) { ExecuteEvents.Execute(eventData.pointerPress, eventData, ExecuteEvents.pointerUpHandler); var clickHandlerGO = ExecuteEvents.GetEventHandler <IPointerClickHandler>(currentOverGo); if (eventData.pointerPress == clickHandlerGO && eventData.eligibleForClick) { ExecuteEvents.Execute(eventData.pointerPress, eventData, ExecuteEvents.pointerClickHandler); } if (eventData.dragging && eventData.pointerDrag != null) { ExecuteEvents.ExecuteHierarchy(currentOverGo, eventData, ExecuteEvents.dropHandler); ExecuteEvents.Execute(eventData.pointerDrag, eventData, ExecuteEvents.endDragHandler); } eventData.eligibleForClick = eventData.dragging = false; eventData.pointerPress = eventData.rawPointerPress = eventData.pointerDrag = null; } else if (eventData.pointerPress != null) { // Check to see if we've dragged over a press handler var newPress = ExecuteEvents.GetEventHandler <IPointerDownHandler>(currentOverGo); // We didn't find a press handler, so we search for a click handler. if (newPress == null) { newPress = ExecuteEvents.GetEventHandler <IPointerClickHandler>(currentOverGo); } // If we moved from our initial press object, process an up for that object. if (eventData.pointerPress != newPress) { var pointerUpHandlerGO = ExecuteEvents.ExecuteHierarchy(eventData.pointerPress, eventData, ExecuteEvents.pointerUpHandler); if (pointerUpHandlerGO == null) { pointerUpHandlerGO = ExecuteEvents.GetEventHandler <IPointerUpHandler>(eventData.pointerPress); ExecuteEvents.Execute(pointerUpHandlerGO, eventData, ExecuteEvents.pointerUpHandler); } eventData.eligibleForClick = false; eventData.pointerPress = null; eventData.rawPointerPress = null; } } }