Commit 0e949152 authored by Lachlan Ford's avatar Lachlan Ford Committed by Chromium LUCI CQ

Implemented gamepad for generic-hand-select-grasp per the input profile

definition.

https://github.com/immersive-web/webxr-input-profiles/blob/master/packages/registry/profiles/generic/generic-hand-select-grasp.json

The grasp type exposes it as the correct button and does not trigger
the squeeze events.

Change-Id: I5041633e39f7f6b9bbc86bd379be64eeadc1055c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2628888Reviewed-by: default avatarAlexander Cooper <alcooper@chromium.org>
Commit-Queue: Lachlan Ford <laford@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#843686}
parent 6a340039
......@@ -110,6 +110,7 @@ XrResult OpenXrController::InitializeControllerActions() {
RETURN_IF_XR_FAILED(CreateActionsForButton(OpenXrButtonType::kThumbrest));
RETURN_IF_XR_FAILED(CreateActionsForButton(OpenXrButtonType::kButton1));
RETURN_IF_XR_FAILED(CreateActionsForButton(OpenXrButtonType::kButton2));
RETURN_IF_XR_FAILED(CreateActionsForButton(OpenXrButtonType::kGrasp));
const std::string type_string = GetStringFromType(type_);
const std::string name_prefix = type_string + "_controller_";
......@@ -415,6 +416,9 @@ XrResult OpenXrController::CreateActionsForButton(
case OpenXrButtonType::kButton2:
name_prefix += "lower_button_";
break;
case OpenXrButtonType::kGrasp:
name_prefix += "grasp_";
break;
}
std::unordered_map<OpenXrButtonActionType, XrAction>& cur_button =
......
......@@ -89,6 +89,11 @@ base::Optional<Gamepad> GetXrStandardGamepad(
if (thumbrest_button)
builder.AddOptionalButtonData(thumbrest_button.value());
base::Optional<GamepadButton> grasp_button =
controller.GetButton(OpenXrButtonType::kGrasp);
if (grasp_button)
builder.AddOptionalButtonData(grasp_button.value());
return builder.GetGamepad();
}
......
......@@ -40,7 +40,8 @@ enum class OpenXrButtonType {
kThumbrest = 4,
kButton1 = 5,
kButton2 = 6,
kMaxValue = 6,
kGrasp = 7,
kMaxValue = 7,
};
enum class OpenXrAxisType {
......@@ -284,7 +285,7 @@ constexpr OpenXrButtonPathMap kGenericHandSelectGraspButtonPathMaps[] = {
{{OpenXrButtonActionType::kPress, "/input/select/value"},
{OpenXrButtonActionType::kValue, "/input/select/value"}},
2},
{OpenXrButtonType::kTrigger,
{OpenXrButtonType::kGrasp,
{{OpenXrButtonActionType::kPress, "/input/squeeze/value"},
{OpenXrButtonActionType::kValue, "/input/squeeze/value"}},
2},
......@@ -416,7 +417,7 @@ constexpr OpenXrControllerInteractionProfile
OpenXrInteractionProfileType::kHandSelectGrasp,
"/interaction_profiles/microsoft/hand_interaction",
kMSFTHandInteractionExtensionName,
GamepadMapping::kNone,
GamepadMapping::kXrStandard,
kGenericHandSelectGraspInputProfile,
base::size(kGenericHandSelectGraspInputProfile),
kGenericHandSelectGraspButtonPathMaps,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment