| 202 | } |
| 203 | |
| 204 | OSVR_ReturnCode osvrClientGetViewerEyePose(OSVR_DisplayConfig disp, |
| 205 | OSVR_ViewerCount viewer, |
| 206 | OSVR_EyeCount eye, |
| 207 | OSVR_Pose3 *pose) { |
| 208 | OSVR_VALIDATE_DISPLAY_CONFIG; |
| 209 | OSVR_VALIDATE_VIEWER_ID; |
| 210 | OSVR_VALIDATE_EYE_ID; |
| 211 | OSVR_VALIDATE_OUTPUT_PTR(pose, "eye pose"); |
| 212 | try { |
| 213 | *pose = disp->cfg->getViewerEye(viewer, eye).getPose(); |
| 214 | return OSVR_RETURN_SUCCESS; |
| 215 | } catch (osvr::client::NoPoseYet &) { |
| 216 | OSVR_DEV_VERBOSE( |
| 217 | "Error getting viewer eye pose: no pose yet available"); |
| 218 | return OSVR_RETURN_FAILURE; |
| 219 | } catch (std::exception &e) { |
| 220 | |
| 221 | OSVR_DEV_VERBOSE( |
| 222 | "Error getting viewer eye pose - exception: " << e.what()); |
| 223 | return OSVR_RETURN_FAILURE; |
| 224 | } |
| 225 | return OSVR_RETURN_FAILURE; |
| 226 | } |
| 227 | |
| 228 | template <typename Scalar> |
| 229 | static inline OSVR_ReturnCode getViewMatrixImpl(OSVR_DisplayConfig disp, |