Skip to content

Commit

Permalink
only enable hand tracking ext if supported
Browse files Browse the repository at this point in the history
Make the MeshInstances on the HandControllers visible in the editor to see blocks for hands.

fixes #26
  • Loading branch information
ChristophHaag committed Jan 29, 2021
1 parent 59bf4b5 commit 6d3a52d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 14 deletions.
35 changes: 21 additions & 14 deletions src/OpenXRApi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -219,27 +219,31 @@ bool OpenXRApi::isReferenceSpaceSupported(XrReferenceSpaceType type) {
bool OpenXRApi::initialiseExtensions() {
XrResult result;

// Maybe we should remove the error checking here, if the extension is not supported, we won't be doing anything with this.

result = xrGetInstanceProcAddr(instance, "xrCreateHandTrackerEXT", (PFN_xrVoidFunction *)&xrCreateHandTrackerEXT_ptr);
if (!xr_result(result, "Failed to obtain xrCreateHandTrackerEXT function pointer")) {
return false;
}
if (hand_tracking_ext_supported) {
result = xrGetInstanceProcAddr(instance, "xrCreateHandTrackerEXT", (PFN_xrVoidFunction *)&xrCreateHandTrackerEXT_ptr);
if (!xr_result(result, "Failed to obtain xrCreateHandTrackerEXT function pointer")) {
return false;
}

result = xrGetInstanceProcAddr(instance, "xrDestroyHandTrackerEXT", (PFN_xrVoidFunction *)&xrDestroyHandTrackerEXT_ptr);
if (!xr_result(result, "Failed to obtain xrDestroyHandTrackerEXT function pointer")) {
return false;
}
result = xrGetInstanceProcAddr(instance, "xrDestroyHandTrackerEXT", (PFN_xrVoidFunction *)&xrDestroyHandTrackerEXT_ptr);
if (!xr_result(result, "Failed to obtain xrDestroyHandTrackerEXT function pointer")) {
return false;
}

result = xrGetInstanceProcAddr(instance, "xrLocateHandJointsEXT", (PFN_xrVoidFunction *)&xrLocateHandJointsEXT_ptr);
if (!xr_result(result, "Failed to obtain xrLocateHandJointsEXT function pointer")) {
return false;
result = xrGetInstanceProcAddr(instance, "xrLocateHandJointsEXT", (PFN_xrVoidFunction *)&xrLocateHandJointsEXT_ptr);
if (!xr_result(result, "Failed to obtain xrLocateHandJointsEXT function pointer")) {
return false;
}
}

return true;
}

void OpenXRApi::initialiseHandTracking() {
if (!hand_tracking_ext_supported) {
return;
}

XrResult result;

XrSystemHandTrackingPropertiesEXT handTrackingSystemProperties = {
Expand Down Expand Up @@ -361,7 +365,10 @@ OpenXRApi::OpenXRApi() {

uint32_t enabledExtensionCount = 0;
enabledExtensions[enabledExtensionCount++] = XR_KHR_OPENGL_ENABLE_EXTENSION_NAME;
enabledExtensions[enabledExtensionCount++] = XR_EXT_HAND_TRACKING_EXTENSION_NAME;
if (isExtensionSupported(XR_EXT_HAND_TRACKING_EXTENSION_NAME, extensionProperties, extensionCount)) {
enabledExtensions[enabledExtensionCount++] = XR_EXT_HAND_TRACKING_EXTENSION_NAME;
hand_tracking_ext_supported = true;
}

if (monado_stick_on_ball_ext) {
enabledExtensions[enabledExtensionCount++] = XR_MND_BALL_ON_STICK_EXTENSION_NAME;
Expand Down
1 change: 1 addition & 0 deletions src/OpenXRApi.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ class OpenXRApi {
private:
static OpenXRApi *singleton;
bool successful_init;
bool hand_tracking_ext_supported = false;
bool hand_tracking_supported = false;
int use_count;

Expand Down

0 comments on commit 6d3a52d

Please sign in to comment.