private void UpdateUnityInput() { UpdateTrackedControllers(); // Motion foreach (uint id in devices.Keys) { var nodeType = id.GetNodeType(); var position = InputTracking.GetLocalPosition(nodeType); var rotation = InputTracking.GetLocalRotation(nodeType); XRNodeState nodeState; if (Throwing.TryGetNodeState(nodeType, out nodeState)) { Vector3 controllerVelocity; nodeState.TryGetVelocity(out controllerVelocity); LastVelocity[id] = controllerVelocity; LastPositions[id] = position; } SetTransform(devices[id], position, rotation); } if (CanThrow) { // Create new if (Input.GetButtonDown("MotionController-Select-Left")) { this.CreateNew(NodeExtensions.LEFT_ID); } if (Input.GetButtonDown("MotionController-Select-Right")) { this.CreateNew(NodeExtensions.RIGHT_ID); } if (Input.GetAxis("MotionController-GraspedAmmount-Left") > GripSensitivity && lastGripLeft <= GripSensitivity) { this.CreateNew(NodeExtensions.LEFT_ID); } if (Input.GetAxis("MotionController-GraspedAmmount-Right") > GripSensitivity && lastGripRight <= GripSensitivity) { this.CreateNew(NodeExtensions.RIGHT_ID); } } // Swap if (Input.GetButtonDown("MotionController-Menu-Left")) { this.TrySwitchHeldObject(NodeExtensions.LEFT_ID); } if (Input.GetButtonDown("MotionController-Menu-Right")) { this.TrySwitchHeldObject(NodeExtensions.RIGHT_ID); } if (Input.GetButtonDown("MotionController-TouchpadPressed-Left")) { this.TrySwitchHeldObject(NodeExtensions.LEFT_ID); } if (Input.GetButtonDown("MotionController-TouchpadPressed-Right")) { this.TrySwitchHeldObject(NodeExtensions.RIGHT_ID); } if (CanThrow) { // Throw if (Input.GetButtonUp("MotionController-Select-Left")) { this.TryThrow(XRNode.LeftHand); } if (Input.GetButtonUp("MotionController-Select-Right")) { this.TryThrow(XRNode.RightHand); } if (Input.GetAxis("MotionController-GraspedAmmount-Left") <= GripSensitivity && lastGripLeft > GripSensitivity) { this.TryThrow(XRNode.LeftHand); } if (Input.GetAxis("MotionController-GraspedAmmount-Right") <= GripSensitivity && lastGripRight > GripSensitivity) { this.TryThrow(XRNode.RightHand); } } lastGripLeft = Input.GetAxis("MotionController-GraspedAmmount-Left"); lastGripRight = Input.GetAxis("MotionController-GraspedAmmount-Right"); }