示例#1
0
    protected virtual bool ControllerForward()
    {
        if (!VRTK_ControllerReference.IsValid(controllerReference))
        {
            return(false);
        }

        return(pressEnabled && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Press, controllerReference));
    }
示例#2
0
    // Update is called once per frame
    void Update()
    {
        var grabbingObject = grab.GetGrabbedObject();

        VRTK_ControllerReference reference = VRTK_ControllerReference.GetControllerReference(gameObject);

        IsOnSwipeHorizontal = false;
        IsOnSwipeVertical   = false;
        diffTouchPadX       = 0f;
        diffTouchPadY       = 0f;

        //タッチパッドのスワイプを取得
        if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.TouchDown, reference))
        {
            touchMarginSumX = 0f;
            touchMarginSumY = 0f;
            var prevTouchAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference);
            prevTouchPadX = prevTouchAxis.x;
            prevTouchPadY = prevTouchAxis.y;
        }

        if (grabbingObject != null && !Node.scaleConstraint)
        {
            if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, reference))
            {
                var   nowTouchAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference);
                float nowTouchPadX = nowTouchAxis.x;
                diffTouchPadX = nowTouchPadX - prevTouchPadX;
                if (touchMarginSumX > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら
                {
                    IsOnSwipeHorizontal = true;
                }
                prevTouchPadX    = nowTouchPadX;
                touchMarginSumX += Mathf.Abs(diffTouchPadX);

                float nowTouchPadY = nowTouchAxis.y;
                diffTouchPadY = nowTouchPadY - prevTouchPadY;
                if (touchMarginSumY > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら
                {
                    IsOnSwipeVertical = true;
                }
                prevTouchPadY    = nowTouchPadY;
                touchMarginSumY += Mathf.Abs(diffTouchPadY);
            }

            //左右スワイプでスケール変更
            if (IsOnSwipeHorizontal)
            {
                Vector3 newScale = (1f + diffTouchPadX) * grabbingObject.transform.localScale;
                grabbingObject.transform.localScale = newScale;
            }
        }
    }
示例#3
0
 private bool IsForwardPressed()
 {
     if (!VRTK_ControllerReference.IsValid(controllerReference))
     {
         return(false);
     }
     if (canPress &&
         VRTK_SDK_Bridge.GetControllerButtonState(cycleButton, SDK_BaseController.ButtonPressTypes.Press, controllerReference))
     {
         return(true);
     }
     return(false);
 }
示例#4
0
 private bool IsForwardPressed()
 {
     if (!VRTK_ControllerReference.IsValid(controllerReference))
     {
         return(false);
     }
     if (canPress &&
         VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
         VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
         VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Press, controllerReference))
     {
         return(true);
     }
     return(false);
 }
    public void DoClickLeft()
    {
        VRTK_ControllerReference reference = VRTK_ControllerReference.GetControllerReference(controllerScriptAliasObject);

        if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, reference))
        {
            if (OnClickAndGripLeft != null)
            {
                OnClickAndGripLeft.Invoke();
            }
        }
        else
        {
            if (OnClickLeft != null)
            {
                OnClickLeft.Invoke();
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
        VRTK_ControllerReference reference = VRTK_ControllerReference.GetControllerReference(gameObject);


        if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.PressDown, reference))
        {
        }
        //グリップ押してる
        else if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, reference))
        {
            //左右スワイプでスケール変更
            if (wrapControllerInput.IsOnSwipeHorizontal)
            {
                Vector3 newScale = (1f - wrapControllerInput.diffTouchPadX) * rootObject.transform.localScale;
                ScaleAround(rootObject, transform.position, newScale);
            }
        }
    }
示例#7
0
        void Update()
        {
            VRTK_ControllerReference controllerReference = VRTK_ControllerReference.GetControllerReference(gameObject);

            //Only continue if the controller reference is valid
            if (!VRTK_ControllerReference.IsValid(controllerReference))
            {
                return;
            }

            Vector2 currentTriggerAxis  = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Trigger, controllerReference);
            Vector2 currentGripAxis     = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Grip, controllerReference);
            Vector2 currentTouchpadAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, controllerReference);

            // Trigger Pressed end
            if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.PressUp, controllerReference))
            {
            }
        }
    // Update is called once per frame
    void Update()
    {
        //スワイプ値リセット
        IsOnSwipeHorizontal = false;
        IsOnSwipeVertical   = false;
        diffTouchPadX       = 0f;
        diffTouchPadY       = 0f;

        VRTK_ControllerReference reference = VRTK_ControllerReference.GetControllerReference(gameObject);

        if (headsetType == SDK_BaseHeadset.HeadsetType.Undefined)
        {
            headsetType = VRTK_DeviceFinder.GetHeadsetType();
        }

        if (headsetType == SDK_BaseHeadset.HeadsetType.OculusRift)
        {
            //Riftでのタッチパッドの移動量取得
            var axis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference);

            var absX = Mathf.Abs(axis.x);
            var absY = Mathf.Abs(axis.y);
            if (absX > absY) //X軸スワイプ
            {
                if (absX > TOUCH_MARGIN)
                {
                    IsOnSwipeHorizontal = true;
                    diffTouchPadX       = (axis.x - TOUCH_MARGIN) * 0.05f * Time.deltaTime * 30f;
                }
            }
            else //Y軸スワイプ
            {
                if (absY > TOUCH_MARGIN)
                {
                    IsOnSwipeVertical = true;
                    diffTouchPadY     = (axis.y - TOUCH_MARGIN) * 0.05f * Time.deltaTime * 30f;
                }
            }
        }
        else //Rift以外の場合
        {
            //Viveでのタッチパッドの移動量取得
            if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.TouchDown, reference))
            {
                touchMarginSumX = 0f;
                touchMarginSumY = 0f;
                prevTouchPadX   = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference).x;
                prevTouchPadY   = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference).y;
            }
            else if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, reference))
            {
                float nowTouchPadX = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference).x;
                diffTouchPadX = nowTouchPadX - prevTouchPadX;
                if (touchMarginSumX > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら
                {
                    IsOnSwipeHorizontal = true;
                }
                prevTouchPadX    = nowTouchPadX;
                touchMarginSumX += Mathf.Abs(diffTouchPadX);

                float nowTouchPadY = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference).y;
                diffTouchPadY = nowTouchPadY - prevTouchPadY;
                if (touchMarginSumY > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら
                {
                    IsOnSwipeVertical = true;
                }
                prevTouchPadY    = nowTouchPadY;
                touchMarginSumY += Mathf.Abs(diffTouchPadY);
            }
        }
    }
示例#9
0
    // Update is called once per frame
    void Update()
    {
        VRTK_ControllerReference leftReference  = VRTK_ControllerReference.GetControllerReference(leftControllerAlias);
        VRTK_ControllerReference rightReference = VRTK_ControllerReference.GetControllerReference(rightControllerAlias);
        bool isPressGrip = false;

        //左手のグリップ押した
        if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, leftReference))
        {
            //移動
            var diffPosition = rootObjectT.InverseTransformPoint(leftControllerAlias.transform.position) - lastLeftPos;
            targetPosition = targetPosition - rootObjectT.TransformVector(diffPosition) * moveFactor;
            isPressGrip    = true;
        }

        //右手のグリップ押した
        if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, rightReference))
        {
            //移動
            var diffPosition = rootObjectT.InverseTransformPoint(rightControllerAlias.transform.position) - lastRightPos;
            targetPosition = targetPosition - rootObjectT.TransformVector(diffPosition) * moveFactor;
            isPressGrip    = true;
        }

        //移動させる

        /*if (!VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, leftReference) && !VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, rightReference))
         * {*/
        if (isPressGrip)
        {
            rootObjectT.position = Vector3.Lerp(rootObjectT.position, targetPosition, Time.deltaTime * lerpFactor);
        }
        else
        {
            targetPosition = rootObjectT.position;
        }


        //両手のグリップ押してる
        if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, leftReference) && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, rightReference))
        {
            //スケール
            float   lastDistance = Vector3.Distance(lastLeftPos, lastRightPos);
            Vector3 nowLeftPos   = rootObjectT.InverseTransformPoint(leftControllerAlias.transform.position);
            Vector3 nowRightPos  = rootObjectT.InverseTransformPoint(rightControllerAlias.transform.position);
            float   diffScale    = lastDistance / Vector3.Distance(nowLeftPos, nowRightPos);

            //rootObjectT.transform.localScale = rootObjectT.transform.localScale * diffScale;
            ScaleAround(rootObjectT, (leftControllerAlias.transform.position + rightControllerAlias.transform.position) / 2f, rootObjectT.transform.localScale * (diffScale + 1f) * 0.5f);

            targetPosition = rootObjectT.position;

            //回転
            Vector2 leftControllerXZPos  = new Vector2(leftControllerAlias.transform.position.x, leftControllerAlias.transform.position.z);
            Vector2 rightControllerXZPos = new Vector2(rightControllerAlias.transform.position.x, rightControllerAlias.transform.position.z);
            var     diffControllerXZPos  = leftControllerXZPos - rightControllerXZPos;
            float   rad    = Mathf.Atan2(diffControllerXZPos.y, diffControllerXZPos.x);
            float   degree = rad * Mathf.Rad2Deg;
            if (initialDegree == null)
            {
                initialDegree = degree;
            }

            var diffDegree = degree - initialDegree;

            /*
             * if (diffDegree > 180f)
             * { diffDegree -= 360f; }
             * if (diffDegree < -180f)
             * {
             *  diffDegree += 360f;
             * }*/

            //rootObjectT.Rotate(0f, diffDegree, 0f);
            rootObjectT.RotateAround((leftControllerAlias.transform.position + rightControllerAlias.transform.position) / 2f, Vector3.up, diffDegree.Value);
        }
        else
        {
            initialDegree = null;
        }

        lastLeftPos  = rootObjectT.InverseTransformPoint(leftControllerAlias.transform.position);
        lastRightPos = rootObjectT.InverseTransformPoint(rightControllerAlias.transform.position);
    }
示例#10
0
 // Token: 0x06001E95 RID: 7829 RVA: 0x0009B81C File Offset: 0x00099A1C
 private bool IsBackPressed()
 {
     return(VRTK_ControllerReference.IsValid(this.controllerReference) && (this.canPress && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.Press, this.controllerReference) && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, this.controllerReference) && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.ButtonTwo, SDK_BaseController.ButtonPressTypes.Press, this.controllerReference)));
 }
    // Update is called once per frame
    void Update()
    {
        VRTK_ControllerReference reference = VRTK_ControllerReference.GetControllerReference(gameObject);

        IsOnSwipeHorizontal = false;
        IsOnSwipeVertical   = false;
        diffTouchPadX       = 0f;
        diffTouchPadY       = 0f;

        //グリップ押してる
        if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, reference))
        {
            //タッチパッドのスワイプを取得
            if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.TouchDown, reference))
            {
                touchMarginSumX = 0f;
                touchMarginSumY = 0f;
                var prevTouchAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference);
                prevTouchPadX = prevTouchAxis.x;
                prevTouchPadY = prevTouchAxis.y;
            }
            else if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, reference))
            {
                var   nowTouchAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference);
                float nowTouchPadX = nowTouchAxis.x;
                diffTouchPadX = nowTouchPadX - prevTouchPadX;
                if (touchMarginSumX > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら
                {
                    IsOnSwipeHorizontal = true;
                }
                prevTouchPadX    = nowTouchPadX;
                touchMarginSumX += Mathf.Abs(diffTouchPadX);

                float nowTouchPadY = nowTouchAxis.y;
                diffTouchPadY = nowTouchPadY - prevTouchPadY;
                if (touchMarginSumY > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら
                {
                    IsOnSwipeVertical = true;
                }
                prevTouchPadY    = nowTouchPadY;
                touchMarginSumY += Mathf.Abs(diffTouchPadY);
            }
            else if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.TouchUp, reference))
            {
                targetPosition = rootObject.transform.position;
                targetRotation = rootObject.transform.rotation;
                prevPosition   = rootObject.transform.InverseTransformPoint(transform.parent.position);
                prevRotation   = Quaternion.Inverse(rootObject.transform.rotation) * transform.parent.rotation;
            }
        }


        if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.PressDown, reference))
        {
            targetPosition = rootObject.transform.position;
            targetRotation = rootObject.transform.rotation;
            prevPosition   = rootObject.transform.InverseTransformPoint(transform.parent.position);
            prevRotation   = Quaternion.Inverse(rootObject.transform.rotation) * transform.parent.rotation;
        }
        //グリップ押してる
        else if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, reference))
        {
            //移動
            var diffPosition = rootObject.transform.InverseTransformPoint(transform.parent.position) - prevPosition;
            targetPosition = targetPosition - rootObject.transform.TransformVector(diffPosition) * moveFactor;
            if (!VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, reference))
            {
                rootObject.transform.position = Vector3.Lerp(rootObject.transform.position, targetPosition, Time.deltaTime * lerpFactor);
            }

            prevPosition = rootObject.transform.InverseTransformPoint(transform.parent.position);

            /*
             * //回転
             * var diffRotation = Quaternion.Inverse(rootObject.transform.rotation) * transform.parent.rotation * Quaternion.Inverse(prevRotation);
             * var euler = diffRotation.eulerAngles;
             * diffRotation = Quaternion.Euler(0f, diffRotation.eulerAngles.y * rotateFactor, 0f);
             * targetRotation = targetRotation * diffRotation;
             * if (!VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, reference))
             * {
             *  //var lerpQ = Quaternion.Lerp(rootObject.transform.rotation, targetRotation, Time.deltaTime * lerpFactor);
             *  float angle;
             *  Vector3 axis;
             *  diffRotation.ToAngleAxis(out angle, out axis);
             *  rootObject.transform.RotateAround(transform.parent.position, axis, angle);
             * }
             *
             * prevRotation = Quaternion.Inverse(rootObject.transform.rotation) * transform.parent.rotation;
             */
        }

        //左右スワイプでスケール変更
        if (IsOnSwipeHorizontal)
        {
            Vector3 newScale = (1f - diffTouchPadX) * rootObject.transform.localScale;
            ScaleAround(rootObject, transform.position, newScale);
        }
    }