protected bool ShouldStartDrag(Pointer3DEventData eventData) { if (!eventData.useDragThreshold || eventData.raycaster == null) { return(true); } var currentPos = eventData.position3D + (eventData.rotation * Vector3.forward) * eventData.pressDistance; var pressPos = eventData.pressPosition3D + (eventData.pressRotation * Vector3.forward) * eventData.pressDistance; var threshold = eventData.raycaster.dragThreshold; return((currentPos - pressPos).sqrMagnitude >= threshold * threshold); }
public void OnPointer3DPressExit(Pointer3DEventData eventData) { // skip if it was teleporting if (teleportCoroutine != null) { return; } // skip if it was not releasing the button if (eventData.GetPress()) { return; } // check if is teleport button VivePointerEventData viveEventData; if (eventData.TryGetViveButtonEventData(out viveEventData)) { switch (teleportButton) { case TeleportButton.Trigger: if (viveEventData.viveButton != ControllerButton.Trigger) { return; } break; case TeleportButton.Pad: if (viveEventData.viveButton != ControllerButton.Pad) { return; } break; case TeleportButton.Grip: if (viveEventData.viveButton != ControllerButton.Grip) { return; } break; } } else if (eventData.button != (PointerEventData.InputButton)teleportButton) { switch (teleportButton) { case TeleportButton.Trigger: if (eventData.button != PointerEventData.InputButton.Left) { return; } break; case TeleportButton.Pad: if (eventData.button != PointerEventData.InputButton.Right) { return; } break; case TeleportButton.Grip: if (eventData.button != PointerEventData.InputButton.Middle) { return; } break; } } var hitResult = eventData.pointerCurrentRaycast; // check if hit something if (!hitResult.isValid) { return; } if (target == null || pivot == null) { FindTeleportPivotAndTarget(); } var headVector = Vector3.ProjectOnPlane(pivot.position - target.position, target.up); var targetPos = hitResult.worldPosition - headVector; if (VRModule.activeModule != VRModuleActiveEnum.SteamVR && fadeDuration != 0f) { Debug.LogWarning("Install SteamVR plugin and enable SteamVRModule support to enable fading"); fadeDuration = 0f; } teleportCoroutine = StartCoroutine(StartTeleport(targetPos, fadeDuration)); }
protected virtual void ProcessPress(Pointer3DEventData eventData) { if (!eventData.eligibleForClick) { if (eventData.GetPress()) { ProcessPressDown(eventData); } } else { if (!eventData.GetPress()) { ProcessPressUp(eventData); } } }
// This event happens when pointer leaves this object OR the button is released public virtual void OnPointer3DPressExit(Pointer3DEventData eventData) { if (triggeredType != TriggeredTypeEnum.ButtonUp) { return; } // skip if it was teleporting if (teleportCoroutine != null) { return; } // skip if the pointer leaves this object but the button isn't released if (eventData.GetPress()) { return; } OnPointerTeleport(eventData); }
public void OnPointer3DPressExit(Pointer3DEventData eventData) { int index = reference.IndexOf(':'); if (index != -1) { string refTarget = reference.Substring(0, index); switch (refTarget) { case "state": string refNumberStr = reference.Substring(index + 1, reference.Length - index - 1); int refNumber = Convert.ToInt32(refNumberStr); vtm.PrepareNewState(refNumber); break; case "scene": string refSceneStr = reference.Substring(index + 1, reference.Length - index - 1); SceneManager.LoadSceneAsync(refSceneStr); break; } } }
public void OnPointer3DHover(Pointer3DEventData eventData) { isHovered = true; }
public static void AssignPointerId(Pointer3DEventData eventData) { eventData.pointerId = validEventDataId--; }
public void OnPointer3DPressExit(Pointer3DEventData eventData) { // skip if it was teleporting if (teleportCoroutine != null) { return; } // skip if it was not releasing the button if (eventData.GetPress()) { return; } // check if is teleport button VivePointerEventData viveEventData; if (eventData.TryGetViveButtonEventData(out viveEventData)) { switch (teleportButton) { case TeleportButton.Trigger: if (viveEventData.viveButton != ControllerButton.Trigger) { return; } break; case TeleportButton.Pad: if (viveEventData.viveButton != ControllerButton.Pad) { return; } break; case TeleportButton.Grip: if (viveEventData.viveButton != ControllerButton.Grip) { return; } break; } } else if (eventData.button != (PointerEventData.InputButton)teleportButton) { switch (teleportButton) { case TeleportButton.Trigger: if (eventData.button != PointerEventData.InputButton.Left) { return; } break; case TeleportButton.Pad: if (eventData.button != PointerEventData.InputButton.Right) { return; } break; case TeleportButton.Grip: if (eventData.button != PointerEventData.InputButton.Middle) { return; } break; } } var hitResult = eventData.pointerCurrentRaycast; // check if hit something if (!hitResult.isValid) { return; } if (VRModule.activeModule != VRModuleActiveEnum.SteamVR && fadeDuration != 0f) { Debug.LogWarning("Install SteamVR plugin and enable SteamVRModule support to enable fading"); fadeDuration = 0f; } openMenu(); }