private void UpdateDevicePose()
{
IVRModuleDeviceState prevState;
IVRModuleDeviceStateRW currState;
EnsureValidDeviceState(HEAD_INDEX, out prevState, out currState);
if (currState.isConnected)
{
currState.position = InputTracking.GetLocalPosition(XRNode.Head);
currState.rotation = InputTracking.GetLocalRotation(XRNode.Head);
currState.isPoseValid = currState.pose != RigidPose.identity;
}
EnsureValidDeviceState(RIGHT_HAND_INDEX, out prevState, out currState);
if (currState.isConnected)
{
currState.position = m_rightArm.ControllerPositionFromHead;
currState.rotation = m_rightArm.ControllerRotationFromHead;
currState.isPoseValid = m_rightDevice.Orientation != Quaternion.identity;
}
EnsureValidDeviceState(LEFT_HAND_INDEX, out prevState, out currState);
if (currState.isConnected)
{
currState.position = m_leftArm.ControllerPositionFromHead;
currState.rotation = m_leftArm.ControllerRotationFromHead;
currState.isPoseValid = m_leftDevice.Orientation != Quaternion.identity;
}
}