static internal NullablePose GetNodePoseData(XR.XRNode currentNode) { NullablePose resultPose = new NullablePose(); XR.InputTracking.GetNodeStates(nodeStates); foreach (var nodeState in nodeStates) { if (nodeState.nodeType == currentNode) { var pose = Pose.identity; var positionSuccess = nodeState.TryGetPosition(out pose.position); var rotationSuccess = nodeState.TryGetRotation(out pose.rotation); if (positionSuccess) { resultPose.position = pose.position; } if (rotationSuccess) { resultPose.rotation = pose.rotation; } return(resultPose); } } return(resultPose); }
static internal bool TryGetNodePoseData(XR.XRNode node, out Pose resultPose) { XR.InputTracking.GetNodeStates(nodeStates); foreach (XR.XRNodeState nodeState in nodeStates) { if (nodeState.nodeType == node) { bool result = nodeState.TryGetPosition(out resultPose.position); result |= nodeState.TryGetRotation(out resultPose.rotation); return(result); } } resultPose = Pose.identity; return(false); }
static internal PoseDataFlags GetNodePoseData(XR.XRNode node, out Pose resultPose) { PoseDataFlags retData = PoseDataFlags.NoData; XR.InputTracking.GetNodeStates(nodeStates); foreach (XR.XRNodeState nodeState in nodeStates) { if (nodeState.nodeType == node) { if (nodeState.TryGetPosition(out resultPose.position)) { retData |= PoseDataFlags.Position; } if (nodeState.TryGetRotation(out resultPose.rotation)) { retData |= PoseDataFlags.Rotation; } return(retData); } } resultPose = Pose.identity; return(retData); }