Exemple #1
0
        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));
        }
Exemple #3
0
 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;
            }
        }
    }
Exemple #6
0
 public void OnPointer3DHover(Pointer3DEventData eventData)
 {
     isHovered = true;
 }
Exemple #7
0
 public static void AssignPointerId(Pointer3DEventData eventData)
 {
     eventData.pointerId = validEventDataId--;
 }
Exemple #8
0
        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();
        }