blob: b8402fc5e570fd9f3b8dd415668d8a15a066860d [file]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DEVICE_VR_OPENXR_ANDROID_OPENXR_HAND_TRACKER_ANDROID_H_
#define DEVICE_VR_OPENXR_ANDROID_OPENXR_HAND_TRACKER_ANDROID_H_
#include "device/vr/openxr/openxr_hand_tracker.h"
#include "base/memory/raw_ref.h"
#include "device/vr/public/mojom/vr_service.mojom-forward.h"
#include "third_party/openxr/dev/xr_android.h"
#include "third_party/openxr/src/include/openxr/openxr.h"
namespace device {
class OpenXrHandTrackerAndroid : public OpenXrHandTracker,
public OpenXrHandController {
public:
OpenXrHandTrackerAndroid(const OpenXrExtensionHelper& extension_helper,
XrSession session,
OpenXrHandednessType type);
~OpenXrHandTrackerAndroid() override;
const OpenXrHandController* controller() const override;
// OpenXrHandController
mojom::OpenXrInteractionProfileType interaction_profile() const override;
GamepadMapping gamepad_mapping() const override;
std::optional<gfx::Transform> GetBaseFromGripTransform() const override;
std::optional<gfx::Transform> GetGripFromPointerTransform() const override;
std::optional<GamepadButton> GetButton(OpenXrButtonType type) const override;
private:
void AppendToLocationStruct(XrHandJointLocationsEXT& locations) override;
XrHandGestureANDROID gesture_ = {XR_TYPE_HAND_GESTURE_ANDROID};
};
} // namespace device
#endif // DEVICE_VR_OPENXR_ANDROID_OPENXR_HAND_TRACKER_ANDROID_H_