public void Update() { // stop executing Update if playerController is Frozen if (playerController.Frozen) { setDestinationPS(true); return; } // stop execution here if Quest if (UnityEngine.XR.XRDevice.model == "Oculus Quest") { return; } // if player is walking, always disable linerender // if (lineRendererActive && playerController.IsWalking) { // enabledRayCaster(false); // } else if (!lineRendererActive && !playerController.IsWalking) { // enabledRayCaster(true); // } if (!playerController.IsWalking && controllerRayCaster.CurrentInteractible) { setDestinationPS(true); } else { setDestinationPS(false); } // only triggered once one player presses the trigger down if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger) && controllerRayCaster.CurrentInteractible) { // get current object targeted by raycast InteractiveItem currentInteractible = controllerRayCaster.CurrentInteractible; // get it's button component Button currentButton = currentInteractible.gameObject.GetComponent <Button>(); if (currentButton == null) { return; } // press the button currentButton.Press(); } // play presses trigger button: grab item if (!isGrabbing && OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger) && controllerRayCaster.CurrentInteractible) { grabItem(); } // player let's go of triger button: ungrab item if (isGrabbing && !OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)) { ungrabItem(); } if (isGrabbing) { // ungrabItem if it becomes ungrabbable if (!currentGrabbable.IsGrabbable) { ungrabItem(); return; } // move object with ElectroGrabber moveItem(); // change item distance from player (only if not walking) if (playerController.IsWalking) { resetTouchPadY(); } else { changeItemDistance(); } // show laser beam to object extendLaser(); } }