Exemple #1
0
    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();
        }
    }
Exemple #2
0
    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);
        }
    }
Exemple #3
0
    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;
        }
    }
Exemple #4
0
    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();
    }