Skip to content

Commit

Permalink
[Pico] Use XR_BD_controller_interaction if available
Browse files Browse the repository at this point in the history
Bytedance has an extension that when enabled provides an updated
interaction profile for Pico Neo3, Pico 4 and Pico G3 controllers.

We were using the old /interaction_profiles/pico/neo3_controller
as it was enough for us but we should use the newer if available.
  • Loading branch information
svillar committed Sep 4, 2024
1 parent 209332e commit d578414
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 3 deletions.
3 changes: 3 additions & 0 deletions app/src/openxr/cpp/DeviceDelegateOpenXR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,9 @@ struct DeviceDelegateOpenXR::State {
if (OpenXRExtensions::IsExtensionSupported(XR_EXT_EYE_GAZE_INTERACTION_EXTENSION_NAME))
extensions.push_back(XR_EXT_EYE_GAZE_INTERACTION_EXTENSION_NAME);

if (OpenXRExtensions::IsExtensionSupported(XR_BD_CONTROLLER_INTERACTION_EXTENSION_NAME))
extensions.push_back(XR_BD_CONTROLLER_INTERACTION_EXTENSION_NAME);

java = {XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR};
java.applicationVM = javaContext->vm;
java.applicationActivity = javaContext->activity;
Expand Down
31 changes: 28 additions & 3 deletions app/src/openxr/cpp/OpenXRInputMappings.h
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ namespace crow {
};

// Pico controller: this definition was created for the Pico 4, but the Neo 3 will likely also be compatible
const OpenXRInputMapping Pico4x {
const OpenXRInputMapping Pico4xOld {
"/interaction_profiles/pico/neo3_controller",
IS_6DOF,
"vr_controller_pico4_left.obj",
Expand All @@ -273,6 +273,31 @@ namespace crow {
},
};

const OpenXRInputMapping Pico4x {
"/interaction_profiles/bytedance/pico4_controller",
IS_6DOF,
"vr_controller_pico4_left.obj",
"vr_controller_pico4_right.obj",
device::Pico4x,
std::vector<OpenXRInputProfile> { "pico-4", "generic-trigger-squeeze-thumbstick" },
std::vector<OpenXRButton> {
{ OpenXRButtonType::Trigger, kPathTrigger, OpenXRButtonFlags::ValueTouch, OpenXRHandFlags::Both },
{ OpenXRButtonType::Squeeze, kPathSqueeze, OpenXRButtonFlags::Value, OpenXRHandFlags::Both },
{ OpenXRButtonType::Thumbstick, kPathThumbstick, OpenXRButtonFlags::ClickTouch, OpenXRHandFlags::Both },
{ OpenXRButtonType::ButtonX, kPathButtonX, OpenXRButtonFlags::ClickTouch, OpenXRHandFlags::Left },
{ OpenXRButtonType::ButtonY, kPathButtonY, OpenXRButtonFlags::ClickTouch, OpenXRHandFlags::Left, },
{ OpenXRButtonType::ButtonA, kPathButtonA, OpenXRButtonFlags::ClickTouch, OpenXRHandFlags::Right },
{ OpenXRButtonType::ButtonB, kPathButtonB, OpenXRButtonFlags::ClickTouch, OpenXRHandFlags::Right },
{ OpenXRButtonType::Menu, kPathMenu, OpenXRButtonFlags::Click, OpenXRHandFlags::Left, ControllerDelegate::Button::BUTTON_APP, true }
},
std::vector<OpenXRAxis> {
{ OpenXRAxisType::Thumbstick, kPathThumbstick, OpenXRHandFlags::Both },
},
std::vector<OpenXRHaptic> {
{ kPathHaptic, OpenXRHandFlags::Both },
},
};

const OpenXRInputMapping PicoNeo3 {
"/interaction_profiles/pico/neo3_controller",
IS_6DOF,
Expand Down Expand Up @@ -411,8 +436,8 @@ namespace crow {
{}
};

const std::array<OpenXRInputMapping, 11> OpenXRInputMappings {
OculusTouch, OculusTouch2, MetaQuestTouchPro, Pico4x, PicoNeo3, Hvr6DOF, Hvr3DOF, LenovoVRX, MagicLeap2, MetaTouchPlus, HandInteraction
const std::array<OpenXRInputMapping, 12> OpenXRInputMappings {
OculusTouch, OculusTouch2, MetaQuestTouchPro, Pico4x, Pico4xOld, PicoNeo3, Hvr6DOF, Hvr3DOF, LenovoVRX, MagicLeap2, MetaTouchPlus, HandInteraction
};

} // namespace crow
1 change: 1 addition & 0 deletions app/src/openxr/cpp/OpenXRInputSource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1045,6 +1045,7 @@ XrResult OpenXRInputSource::UpdateInteractionProfile(ControllerDelegate& delegat
if (!strncmp(mapping.path, path, path_len)) {
mActiveMapping = &mapping;
mUsingHandInteractionProfile = !strncmp(path, kInteractionProfileHandInteraction, path_len);
VRB_LOG("OpenXR: NEW active mapping %s", mActiveMapping->path);
break;
}
}
Expand Down

0 comments on commit d578414

Please sign in to comment.