예제 #1
0
    // Update is called once per frame
    void Update()
    {
        //Change seabed using VR
        if ((clickMove.GetLastStateDown(handtype) && clickAxis.GetLastAxis(handtype).y < 0) || Input.GetKeyDown(KeyCode.DownArrow))
        {
            if (nActualSeaBed > 0)
            {
                nActualSeaBed--;
                seaBed.GetComponent <MeshFilter>().mesh = seaBeds[nActualSeaBed];
                imageVR.sprite      = seaBedMaps[nActualSeaBed];
                imageFS.sprite      = seaBedMaps[nActualSeaBed];
                dataTimeTextVR.text = "Year: " + (GetComponent <TimeChange>().years[nActualSeaBed]).ToString();
                dataTimeTextFS.text = "Year: " + (GetComponent <TimeChange>().years[nActualSeaBed]).ToString();
            }
        }

        //Change seabed using Flat Screens
        if ((clickMove.GetLastStateDown(handtype) && clickAxis.GetLastAxis(handtype).y > 0) || Input.GetKeyDown(KeyCode.UpArrow))
        {
            if (nActualSeaBed < seaBeds.Length - 1)
            {
                nActualSeaBed++;
                seaBed.GetComponent <MeshFilter>().mesh = seaBeds[nActualSeaBed];
                imageVR.sprite      = seaBedMaps[nActualSeaBed];
                imageFS.sprite      = seaBedMaps[nActualSeaBed];
                dataTimeTextVR.text = "Year: " + (GetComponent <TimeChange>().years[nActualSeaBed]).ToString();
                dataTimeTextFS.text = "Year: " + (GetComponent <TimeChange>().years[nActualSeaBed]).ToString();
            }
        }
    }
예제 #2
0
    public SteamVR_Action_Boolean trackpadAction; // actions/default/in/teleport

    //Per a que aço funcione, has d'anyadir al GameObject que te este script un altre script que es diu
    //ActionSetONLoad y ficar el ActionSet que anem a utilitzar

    void Update()
    {
        if (trackpadAction.GetLastStateDown(SteamVR_Input_Sources.LeftHand))
        {
            Pulse(4, 320, 1, SteamVR_Input_Sources.LeftHand);
        }
        if (trackpadAction.GetLastStateDown(SteamVR_Input_Sources.RightHand))
        {
            Pulse(1, 75, 0.2f, SteamVR_Input_Sources.RightHand);
        }
    }
예제 #3
0
    // Update is called once per frame
    void Update()
    {
        if (gripAction.GetLastStateDown(handType))
        {
            if (collidingObject && collidingObject.tag != "Bubble")
            {
                GrabObject();
            }
        }

        if (gripAction.GetLastStateUp(handType))
        {
            if (objectInHand)
            {
                ReleaseObject();
            }
        }
        if (swapAction.GetState(SteamVR_Input_Sources.LeftHand) && swapAction.GetState(SteamVR_Input_Sources.RightHand) && !swapped)
        {
            print("Swapped");
            swapped = true;
            ControllerActionScript controlScript = GetComponent <ControllerActionScript>();
            controlScript.enabled = !controlScript.enabled;
            LaserScript laserScript = GetComponent <LaserScript>();
            laserScript.enabled = !laserScript.enabled;
        }
        else if (!swapAction.GetState(SteamVR_Input_Sources.LeftHand) && !swapAction.GetState(SteamVR_Input_Sources.RightHand) && swapped)
        {
            print("deswap");
            swapped = false;
        }
    }
예제 #4
0
    /// <summary>
    /// function for updates each frame
    /// </summary>
    void Update()
    {
        RaycastHit hit;

        //Test if ray collided wit something
        if (Physics.Raycast(controllerPose.transform.position, linePoint.forward, out hit, maxRange, interactMask))
        {
            ShowLaser(hit);
            hitPoint = hit.point;
            Button element;

            //Checks if has UI button component
            if (hit.transform.TryGetComponent(out element))
            {
                DisableSelection();
                selectedElement             = element;
                element.targetGraphic.color = element.colors.highlightedColor;
                //Checks if button is pressed
                if (selectAction.GetLastStateDown(handType))
                {
                    element.targetGraphic.color = element.colors.pressedColor;
                    element.onClick.Invoke();
                }
            }
            else
            {
                DisableSelection();
            }
        }
        else
        {
            DisableSelection();
            laser.SetActive(false);
        }
    }
예제 #5
0
    // Update is called once per frame
    void Update()
    {
        if (teleportAction.GetLastStateDown(handType))
        {
            if (ControllerUseEvent != null)
            {
                ControllerUseEvent("positionReset", handType.ToString(), "down");
            }
            DecideOnResetType("position");
        }
        if (teleportAction.GetLastStateUp(handType))
        {
            if (ControllerUseEvent != null)
            {
                ControllerUseEvent("positionReset", handType.ToString(), "up");
            }
        }

        if (menuAction.GetLastStateDown(handType))
        {
            if (ControllerUseEvent != null)
            {
                ControllerUseEvent("rotationReset", handType.ToString(), "down");
            }
            DecideOnResetType("rotation");
        }
        if (menuAction.GetLastStateUp(handType))
        {
            if (ControllerUseEvent != null)
            {
                ControllerUseEvent("rotationReset", handType.ToString(), "up");
            }
        }
    }
예제 #6
0
    private void Update()
    {
        if (laserAction.GetState(inputSource))
        {
            RaycastHit hit;

            if (Physics.Raycast(controllerPose.transform.position, transform.forward, out hit, maxDistance))
            {
                Laser.ShowLaser(controllerPose.transform.position, hit.point, laser);
            }
            else
            {
                Laser.ShowLaser(controllerPose.transform.position,
                                controllerPose.transform.position + controllerPose.transform.forward * maxDistance, laser);
            }
        }
        else
        {
            laser.SetActive(false);
        }

        if (teleportAction.GetLastStateDown(inputSource))
        {
            RaycastHit hit;
            if (Physics.Raycast(controllerPose.transform.position, transform.forward, out hit, maxDistance))
            {
                Vector3 offset = new Vector3(playerCamera.transform.position.x, 0, playerCamera.transform.position.z);
                Vector3 camxz  = new Vector3(camRig.transform.position.x, 0, camRig.transform.position.z);
                offset -= camxz;
                camRig.transform.position = hit.point - offset;
            }
        }
    }
예제 #7
0
 void Update()
 {
     if (grabAction.GetLastStateDown(handType))
     {
         Image.transform.Rotate(new Vector3(90.0f, 0.0f, 0.0f));
     }
 }
예제 #8
0
 private void touchDetection(SteamVR_Input_Sources handType, bool isLeft)
 {
     if (grabPinchAction.GetStateUp(handType))
     {
         Debug.Log("Button released");
         if (isLeft)
         {
             setLeftTriggerDown(false);
         }
         else
         {
             setRightTriggerDown(false);
         }
     }
     if (grabPinchAction.GetLastStateDown(handType))
     {
         Debug.Log("Button down");
         if (isLeft)
         {
             setLeftTriggerDown(true);
         }
         else
         {
             setRightTriggerDown(true);
         }
     }
 }
예제 #9
0
    // Update is called once per frame
    void Update()
    {
        if (asdasd == null)
        {
            asdasd = pouch_pad_object.transform.Find("trackpad_touch");
            Debug.Log("asd");
        }

        //pouch_pad_object

        if (touch_Pad.GetLastStateDown(handType))
        {
            if (asdasd.localPosition.x > 0)
            {
                asdasdasd = 1;
            }
            if (asdasd.localPosition.x < 0)
            {
                asdasdasd = -1;
            }
            Main_camera.transform.Rotate(0, 15 * asdasdasd, 0);
        }
        //if(touch_position.GetLastState(handType))
        //{
        //    if (asdasd.localPosition.x > 0)
        //        asdasdasd = 1;
        //    if (asdasd.localPosition.x < 0)
        //        asdasdasd = -1;

        //}
    }
예제 #10
0
    private void Update()
    {
        if (isFading)
        {
            return;
        }

        isHandInArea = playerBody.isHeadInArea ? Mathf.Abs(transform.localPosition.x) < playerBody.currentPlayfieldSize.x / 2.0f && Mathf.Abs(transform.localPosition.z) < playerBody.currentPlayfieldSize.z / 2.0f : false;

        if (isHandInArea) // is the hand within the playspace
        {
            if (grabAction.GetLastStateDown(hand) && holdAction.GetState(hand))
            {
                if (collidingObject)
                {
                    GrabObject();
                }
            }
        }

        if (grabAction.GetLastStateUp(hand))
        {
            if (GetComponent <FixedJoint>() != null)
            {
                ReleaseObject();
            }
        }
    }
예제 #11
0
    public override void Process()
    {
        // Reset data, set camera
        m_Data.Reset();
        m_Data.position = new Vector2(m_Camera.pixelWidth / 2, m_Camera.pixelHeight / 2);

        //Raycast
        eventSystem.RaycastAll(m_Data, m_RaycastResultCache);
        m_Data.pointerCurrentRaycast = FindFirstRaycast(m_RaycastResultCache);
        m_CurrentObject = m_Data.pointerCurrentRaycast.gameObject;

        //Clear Raycast
        m_RaycastResultCache.Clear();

        //Handle Hover States
        HandlePointerExitAndEnter(m_Data, m_CurrentObject);


        //Press
        if (m_ClickAction.GetLastStateDown(m_TargetSource))
        {
            ProcessPress(m_Data);
        }

        //Release

        if (m_ClickAction.GetLastStateUp(m_TargetSource))
        {
            ProcessRelease(m_Data);
        }
    }
예제 #12
0
    public bool GetSteamVRValidateDown(Hand hand)
    {
        SteamVR_Action_Boolean teleportAction = SteamVR_Input.GetAction <SteamVR_Action_Boolean>("Teleport");
        bool state = teleportAction.GetLastStateDown(hand.handType);

        return(state);
    }
예제 #13
0
    // Update is called once per frame
    public void Update()
    {
        Vector3 velo = controllerPose.GetAngularVelocity();

        //map to scalable number between 0 and 1...
        // velo.x = 1/(1+ Mathf.Exp(velo.x));
        // velo.y = 1/(1+ Mathf.Exp(velo.y));
        // velo.z = 1/(1+ Mathf.Exp(velo.z));

        if (clicked.GetLastStateDown(handType))
        {
            Debug.Log("xArrow " + controllerPose.transform.position.x);
            Debug.Log("yArrow " + controllerPose.transform.position.y);
            Debug.Log("zArrow " + controllerPose.transform.position.z);
            Debug.Log("xArrowtransformed " + velo.x);
            Debug.Log("yArrowtransformed " + velo.y);
            Debug.Log("zArrowtransformed " + velo.z);
        }

        //     xArrow.gameObject.transform.localScale = new Vector3(velo.x,xArrow.gameObject.transform.localScale.y,xArrow.gameObject.transform.localScale.z);
        //    yArrow.gameObject.transform.localScale = new Vector3(yArrow.gameObject.transform.localScale.x,velo.y,xArrow.gameObject.transform.localScale.z);
        //    zArrow.gameObject.transform.localScale = new Vector3(zArrow.gameObject.transform.localScale.x,zArrow.gameObject.transform.localScale.y,velo.z);

        xArrow.localScale = new Vector3(velo.x, xArrow.localScale.y, xArrow.localScale.z);
        yArrow.localScale = new Vector3(yArrow.localScale.x, velo.y, xArrow.localScale.z);
        zArrow.localScale = new Vector3(zArrow.localScale.x, zArrow.localScale.y, velo.z);

        //    xArrow.position = new Vector3(velo.x,xArrow.localScale.y,xArrow.localScale.z);
        //    yArrow.localPosition = pos;
    }
예제 #14
0
 void Update()
 {
     // コントローラの入力で振動
     if (_action.GetLastStateDown(_handType))
     {
         _haptic.Execute(0, DEFAULT_HAPTIC_SECONDS, 1f / DEFAULT_HAPTIC_SECONDS, 1, _handType);
     }
 }
예제 #15
0
    void Update()
    {
        //// 1
        //if (teleportAction.GetState(handType))
        //{
        RaycastHit hit;

        if (TeleportAction.GetState(SteamVR_Input_Sources.Any))
        {
            laser.SetActive(false);
        }

        // 2
        if (Physics.Raycast(controllerPose.transform.position, transform.forward, out hit, 100) && !TeleportAction.GetState(SteamVR_Input_Sources.Any))
        {
            grabbable = hit.transform.gameObject;
            if ((grabbable.GetComponent("Throwable")) != null)
            {
                print(grabbable);
            }
            else
            {
                grabbable = null;
            }
            hitPoint = hit.point;
            ShowLaser(hit);
        }

        ShowLaser(hit);

        // 1
        if (grabAction.GetLastStateDown(handType))
        {
            if (grabbable)
            {
                print(grabbable);
                GrabObject();
            }
        }

        // 2
        if (grabAction.GetLastStateUp(handType))
        {
            if (objectInHand)
            {
                ReleaseObject();
            }
        }
        //}
        //else // 3
        //{
        //    laser.SetActive(false);
        //}
    }
 void Update()
 {
     if (turnLeftAction.GetLastStateDown(handType))
     {
         Rotate(-turnAmount);
     }
     else if (turnRightAction.GetLastStateDown(handType))
     {
         Rotate(turnAmount);
     }
 }
예제 #17
0
    void Update()
    {
        if (grabAction.GetLastStateDown(handType))
        {
            controller.moveType = MoveCtrl.MoveType.LOOK_AT;
        }

        if (grabAction.GetLastStateUp(handType))
        {
            controller.moveType = MoveCtrl.MoveType.DAYDREAM;
        }
    }
예제 #18
0
 private void Update()
 {
     if (tableSetButton.GetLastState(otherHand.input) && tableSetButton.GetLastStateDown(input))
     {
         GameManager.inst.table.transform.position += new Vector3(0, transform.position.y - GameManager.inst.table.transform.position.y, 0);
     }
     if (!grabbingObject && collidingCand.Count > 0)
     {
         collidingObject = collidingCand[0];
         collidingObject.GetComponent <Outline>().enabled = true;
     }
     if (grabButton.GetLastStateDown(input))
     {
         if (!grabbingObject && collidingObject)
         {
             grabbingObject = collidingObject;
             grabbingObject.GetComponent <Rigidbody>().isKinematic = true;
             if (otherHand.grabbingObject == grabbingObject)
             {
                 otherHand.DropObject();
             }
             collidingObject = null;
             collidingCand.Clear();
             grabbingObject.GetComponent <Outline>().enabled = false;
             if (grabbingObject.layer.Equals(LayerMask.NameToLayer("Weapon")))
             {
                 grabbingObject.GetComponentInChildren <LineRenderer>().enabled = true;
             }
             conModel.SetActive(false);
         }
         else
         {
             DropObject();
         }
         GetComponent <AudioSource>().Play();
     }
     if (grabbingObject)
     {
         grabbingObject.transform.position = transform.position + grabbingObject.GetComponent <GrabbableObject>().pos;
         grabbingObject.transform.rotation = transform.rotation;
         grabbingObject.transform.Rotate(grabbingObject.GetComponent <GrabbableObject>().angle);
         if (hairButton.GetLastStateDown(input))
         {
             grabbingObject.GetComponent <GrabbableObject>().HairTrigger();
             if (grabbingObject.layer.Equals(LayerMask.NameToLayer("Panel")))
             {
                 grabbingObject = null;
                 conModel.SetActive(true);
             }
         }
     }
 }
예제 #19
0
    private void Update()
    {
        if (grabGripAction.GetLastStateDown(handType))
        {
            if (collidingObject)
            {
                GrabObject();
            }
        }

        if (grabGripAction.GetLastStateUp(handType) && objectInHand)
        {
            ReleaseObject();
        }
    }
예제 #20
0
    private void Update()
    {
        LerpButton();

        if (grip.GetLastStateDown(SteamVR_Input_Sources.RightHand) && lerpingPos > 0.8f)
        {
            oldestObject.transform.parent.position = new Vector3(0, 100, 0);
            FindObjectOfType <VR_pointerObjectSnapper>().selectedObject = oldestObject.transform.parent.gameObject;
            Destroy(oldestObject);
        }

        if (oldestObject == null)
        {
            Destroy(this.gameObject);
        }
    }
예제 #21
0
    public void Update()
    {
        // 1
        if (teleportAction.GetState(handType))
        {
            // 2
            if (Physics.Raycast(controllerPose.transform.position, transform.forward, out laserhit, 100))
            {
                rayCurrentlyHitting = laserhit.collider.gameObject;
                if (laserhit.collider.gameObject.tag == "TeleportArea")
                {
                    hitPoint = laserhit.point;
                    ShowLaser(laserhit);
                    // 1
                    reticle.SetActive(true);
                    // 2
                    teleportReticleTransform.position = hitPoint + teleportReticleOffset;
                    // 3
                    shouldTeleport = true;
                }
                else if (laserhit.collider.gameObject.tag == "Button")
                {
                    hitPoint = laserhit.point;
                    ShowLaser(laserhit);
                    if (grabAction.GetLastStateDown(handType))
                    {
                        StartButton(laserhit);
                    }
                }
                else if (laserhit.collider.gameObject.tag == "TestTrigger")
                {
                    hitPoint = laserhit.point;
                    ShowLaser(laserhit);
                }
            }
        }
        else // 3
        {
            laser.SetActive(false);
            reticle.SetActive(false);
        }

        if (teleportAction.GetStateUp(handType) && shouldTeleport)
        {
            Teleport();
        }
    }
예제 #22
0
파일: LaserPointer.cs 프로젝트: v1r4m/VRfit
    // Update is called once per frame
    void Update()
    {
        float targetLength = m_defaultLength;

        RaycastHit hit = CreateRaycast(targetLength);

        Vector3 endPos = transform.position + transform.forward * targetLength;

        if (hit.collider != null)
        {
            endPos = hit.point;
        }

        coolDown -= Time.deltaTime;
        m_LineRenderer.enabled = coolDown > 0;

        m_LineRenderer.SetPosition(0, transform.position);
        m_LineRenderer.SetPosition(1, endPos);



        if (m_ClickAction.GetLastStateDown(m_TargetSource))
        {
            ButtonFunctions bf;

            if (coolDown > 0)
            {
                if (hit.collider != null)
                {
                    Debug.Log("Click Hit " + hit.collider.gameObject.name);
                    if ((bf = hit.collider.GetComponent <ButtonFunctions>()) != null)
                    {
                        Debug.Log("Click Sent " + hit.collider.gameObject.name);
                        bf.OnClick();
                    }
                }
            }


            coolDown = 5;
        }

        if (m_ClickAction.GetLastStateUp(m_TargetSource))
        {
            //ProcessRelease(m_Data);
        }
    }
예제 #23
0
    //#if ZED_STEAM_VR
#if ZED_SVR_2_0_INPUT
    /// <summary>
    /// Checks the button state of a given SteamVR boolean action.
    /// </summary>
    /// <param name="state">Whether to check if the button/action is just pressed, just released, or is being held down.</param>
    protected bool CheckSteamVRBoolActionState(SteamVR_Action_Boolean action, ControllerButtonState buttonstate)
    {
        switch (buttonstate)
        {
        case ControllerButtonState.Down:
            return(action.GetLastStateDown(GetSteamVRInputSource()));

        case ControllerButtonState.Held:
            return(action.GetLastState(GetSteamVRInputSource()));

        case ControllerButtonState.Up:
            return(action.GetLastStateUp(GetSteamVRInputSource()));

        default:
            return(false);
        }
    }
예제 #24
0
 void Update()
 {
     if (Index_Finger.GetLastStateDown(Hand_type))
     {
         print("XXXX" + Hand_type);
     }
     if (Index_Finger.GetLastState(Hand_type))
     {
         print("XXXX" + Hand_type);
         Laser.SetActive(true);
     }
     if (Index_Finger.GetLastStateUp(Hand_type))
     {
         print("XXXX" + Hand_type);
         Laser.SetActive(false);
     }
 }
예제 #25
0
 // Update is called once per frame
 void Update()
 {
     if (menuAction.GetLastStateDown(handType))
     {
         if (GameObject.FindGameObjectWithTag("Menu") == null)
         {
             MenuLoad = Instantiate(MenuObj);
             MenuLoad.transform.position = CamPos.transform.position + (CamPos.transform.forward * 4);
             MenuLoad.transform.LookAt(CamPos.transform);
             MenuLoad.transform.Rotate(0.0f, 90.0f, 0.0f);
         }
         else
         {
             Destroy(GameObject.FindGameObjectWithTag("Menu"));
         }
     }
 }
    void Update()
    {
        RaycastHit hit;

        if (Physics.Raycast(_controllerPose.transform.position, transform.forward, out hit, 100f, _layerMask))
        {
            if (!ReferenceEquals(_hitObject, hit.collider.gameObject))
            {
                if (_hitObject != null)
                {
                    Highlight(_hitObject, false);
                }

                Highlight(hit.collider.gameObject, true);
            }

            _hitObject = hit.collider.gameObject;
        }
        else
        {
            if (_hitObject)
            {
                Highlight(_hitObject, false);

                _hitObject = null;
            }
        }

        if (_grabAction.GetLastStateDown(_handType))
        {
            if (_collidingObject && InLayerMask(_collidingObject))
            {
                Highlight(_hitObject, false);

                GrabObject();
            }
        }
        else if (_grabAction.GetLastStateUp(_handType))
        {
            if (_objectInHand)
            {
                ReleaseObject();
            }
        }
    }
예제 #27
0
    // Update is called once per frame
    public void Update()
    {
        Vector3 pos = controllerPose.transform.localPosition;

        //map to scalable number between 0 and 1...
        // pos.x = 5/(1+ Mathf.Exp(pos.x));
        // pos.y = 1/(1+ Mathf.Exp(pos.y));
        // pos.z = 1/(1+ Mathf.Exp(pos.z));

        if (clicked.GetLastStateDown(handType))
        {
            Debug.Log("xArrow " + controllerPose.transform.position.x);
            Debug.Log("yArrow " + controllerPose.transform.position.y);
            Debug.Log("zArrow " + controllerPose.transform.position.z);
            Debug.Log("xArrowtransformed " + pos.x);
            Debug.Log("yArrowtransformed " + pos.y);
            Debug.Log("zArrowtransformed " + pos.z);
        }

        //     xArrow.gameObject.transform.localScale = new Vector3(pos.x,xArrow.gameObject.transform.localScale.y,xArrow.gameObject.transform.localScale.z);
        //    yArrow.gameObject.transform.localScale = new Vector3(yArrow.gameObject.transform.localScale.x,pos.y,xArrow.gameObject.transform.localScale.z);
        //    zArrow.gameObject.transform.localScale = new Vector3(zArrow.gameObject.transform.localScale.x,zArrow.gameObject.transform.localScale.y,pos.z);


        //PROBLEMATIC
        //  for (int i = 0; i < 3; i++){
        //    Debug.Log(i+"th component" + pos[i]);
        //    pos[i] = -pos[i];
        //  }


        xArrow.localScale = new Vector3(pos.x, xArrow.localScale.y, xArrow.localScale.z);
        yArrow.localScale = new Vector3(yArrow.localScale.x, pos.y, yArrow.localScale.z);
        zArrow.localScale = new Vector3(zArrow.localScale.x, zArrow.localScale.y, pos.z);

        //    xArrow.position = new Vector3(pos.x,xArrow.localScale.y,xArrow.localScale.z);
        //    yArrow.localPosition = pos;

        // Hand playerHand;
        // Vector3 eulerRotation = new Vector3(0,0,playerHand.transform.eulerAngles.z);
        // transform.rotation = Quaternion.Euler(eulerRotation);


        testRotation.rotation = Quaternion.Euler(controllerPose.transform.eulerAngles.x, controllerPose.transform.eulerAngles.y, controllerPose.transform.eulerAngles.z);
    }
예제 #28
0
    // Update is called once per frame
    void Update()
    {
        if (grabAction.GetLastStateDown(handType))
        {
            if (collidingObj)
            {
                GrabObject();
            }
        }

        if (grabAction.GetLastStateUp(handType))
        {
            if (objInHand)
            {
                ReleaseObject();
            }
        }
    }
예제 #29
0
 // Update is called once per frame
 void Update()
 {
     //Debug.Log(sword);
     if (grabAction.GetLastStateDown(handType))
     {
         if (collidingObject)
         {
             GrabObject();
         }
     }
     if (grabAction.GetLastStateUp(handType))
     {
         if (objectInHand)
         {
             //sword.OffGrap();
         }
     }
 }
예제 #30
0
 // Update is called once per frame
 void Update()
 {
     //잡기 버튼 누를때
     if (grabAction.GetLastStateDown(hand))
     {
         if (willObject)
         {
             GrabObject();
         }
     }
     if (grabAction.GetLastStateUp(hand))
     {
         if (grabObject)
         {
             ReleaseObject();
         }
     }
 }