void Update() { if (targetHand != null) { int inputIndex = inputModule.GetHandToLocalIndex(targetHand); bool hasPointer = inputModule.HasCurrentPointTarget(inputIndex); // What's the distance to the pointer (if we have one) float distance = lastDistance; if (hasPointer) { Vector3 cursorPos = inputModule.GetCurrentPointPosition(inputIndex); distance = (targetHand.transform.position - cursorPos).magnitude; lastDistance = Mathf.Clamp(distance, 0.1f, 0.6f); } // Set the laser as visible if we've got a pointer or if we're pointing in the right direction bool isPointingAtPanel = IsPointingAtPanel(); cylinder.SetActive(hasPointer || isPointingAtPanel); // Position ourselves this.transform.position = targetHand.transform.position; this.transform.rotation = targetHand.transform.rotation; // Position the laser cylinder.transform.localScale = new Vector3(0.002f, distance * 0.5f, 0.002f); cylinder.transform.rotation = targetHand.transform.rotation * Quaternion.Euler(90.0f, 0.0f, 0.0f); cylinder.transform.position = targetHand.transform.position + targetHand.transform.forward * distance * 0.5f; } else { cylinder.SetActive(false); } }
private void UpdateInput(Hand hand, int handIndex, GameObject handObj, ref bool wasButtonDown) { if (wandInputModule == null) { return; } if (handIndex != -1) { bool isDown = activeBinding.IsInputDown(hand); // Add manual input trigger if (hand == Hand.Left) { isDown |= triggerLeft; } else { isDown |= triggerRight; } int inputIndex = wandInputModule.GetHandToLocalIndex(handObj); if (isDown && !wasButtonDown) { wandInputModule.LatchButtonDown(inputIndex); } if (wasButtonDown && !isDown) { wandInputModule.LatchButtonUp(inputIndex); } wasButtonDown = isDown; } }