private void HandleTriggerDown() { var go = CurrentEventData.pointerCurrentRaycast.gameObject; // Send pointer down event. CurrentEventData.pressPosition = CurrentEventData.position; CurrentEventData.pointerPressRaycast = CurrentEventData.pointerCurrentRaycast; CurrentEventData.pointerPress = EventExecutor.ExecuteHierarchy(go, CurrentEventData, ExecuteEvents.pointerDownHandler) ?? EventExecutor.GetEventHandler <IPointerClickHandler>(go); // Save the pending click state. CurrentEventData.rawPointerPress = go; CurrentEventData.eligibleForClick = true; CurrentEventData.delta = Vector2.zero; CurrentEventData.dragging = false; CurrentEventData.useDragThreshold = true; CurrentEventData.clickCount = 1; CurrentEventData.clickTime = Time.unscaledTime; // Save the drag handler as well CurrentEventData.pointerDrag = EventExecutor.GetEventHandler <IDragHandler>(go); if (CurrentEventData.pointerDrag != null) { EventExecutor.Execute(CurrentEventData.pointerDrag, CurrentEventData, ExecuteEvents.initializePotentialDrag); } if (IsPointerActiveAndAvailable()) { Pointer.OnPointerClickDown(); } }
private void UpdateCurrentObject(GameObject previousObject) { if (CurrentEventData == null) { return; } // Send enter events and update the highlight. GameObject currentObject = GetCurrentGameObject(); // Get the pointer target HandlePointerExitAndEnter(CurrentEventData, currentObject); // Update the current selection, or clear if it is no longer the current object. var selected = EventExecutor.GetEventHandler <ISelectHandler>(currentObject); if (selected == ModuleController.eventSystem.currentSelectedGameObject) { EventExecutor.Execute(ModuleController.eventSystem.currentSelectedGameObject, ModuleController.GetBaseEventData(), ExecuteEvents.updateSelectedHandler); } else { ModuleController.eventSystem.SetSelectedGameObject(null, CurrentEventData); } // Execute hover event. if (currentObject != null && currentObject == previousObject) { EventExecutor.ExecuteHierarchy(currentObject, CurrentEventData, GvrExecuteEventsExtension.pointerHoverHandler); } }
private void HandlePendingClick() { if (CurrentEventData == null || (!CurrentEventData.eligibleForClick && !CurrentEventData.dragging)) { return; } if (IsPointerActiveAndAvailable()) { Pointer.OnPointerClickUp(); } var go = CurrentEventData.pointerCurrentRaycast.gameObject; // Send pointer up and click events. EventExecutor.Execute(CurrentEventData.pointerPress, CurrentEventData, ExecuteEvents.pointerUpHandler); GameObject pointerClickHandler = EventExecutor.GetEventHandler <IPointerClickHandler>(go); if (CurrentEventData.pointerPress == pointerClickHandler && CurrentEventData.eligibleForClick) { EventExecutor.Execute(CurrentEventData.pointerPress, CurrentEventData, ExecuteEvents.pointerClickHandler); } if (CurrentEventData != null && CurrentEventData.pointerDrag != null && CurrentEventData.dragging) { EventExecutor.ExecuteHierarchy(go, CurrentEventData, ExecuteEvents.dropHandler); EventExecutor.Execute(CurrentEventData.pointerDrag, CurrentEventData, ExecuteEvents.endDragHandler); } if (CurrentEventData != null) { // Clear the click state. CurrentEventData.gvrButtonsDown = 0; CurrentEventData.button = 0; CurrentEventData.pointerPress = null; CurrentEventData.rawPointerPress = null; CurrentEventData.eligibleForClick = false; CurrentEventData.clickCount = 0; CurrentEventData.clickTime = 0; CurrentEventData.pointerDrag = null; CurrentEventData.dragging = false; } }
private void HandlePendingClick() { if (CurrentEventData == null || (!CurrentEventData.eligibleForClick && !CurrentEventData.dragging)) { return; } //if (IsPointerActiveAndAvailable()) //{ // Pointer.OnPointerClickUp(); //} var go = CurrentEventData.pointerCurrentRaycast.gameObject; if (go == null) { if (CurrentEventData.eligibleForClick) { ClearClickState(); } return; } //Debug.Log("执行Click!!!!!!! Click gameobject name "+go.name); // Send pointer up and click events. EventExecutor.Execute(CurrentEventData.pointerPress, CurrentEventData, ExecuteEvents.pointerUpHandler); GameObject pointerClickHandler = EventExecutor.GetEventHandler <IPointerClickHandler>(go); if (CurrentEventData.pointerPress == pointerClickHandler && CurrentEventData.eligibleForClick) { EventExecutor.Execute(CurrentEventData.pointerPress, CurrentEventData, ExecuteEvents.pointerClickHandler); } if (CurrentEventData.pointerDrag != null && CurrentEventData.dragging) { EventExecutor.ExecuteHierarchy(go, CurrentEventData, ExecuteEvents.dropHandler); EventExecutor.Execute(CurrentEventData.pointerDrag, CurrentEventData, ExecuteEvents.endDragHandler); } // Clear the click state. //CurrentEventData.pointerPress = null; //CurrentEventData.rawPointerPress = null; //CurrentEventData.eligibleForClick = false; //CurrentEventData.clickCount = 0; //CurrentEventData.clickTime = 0; //CurrentEventData.pointerDrag = null; //CurrentEventData.dragging = false; ClearClickState(); }