Plasma Engine  2.0
Loading...
Searching...
No Matches
OpenXRHandTracking.h
1#pragma once
2
3#include <Foundation/Configuration/Singleton.h>
4#include <GameEngine/XR/XRHandTrackingInterface.h>
5#include <OpenXRPlugin/Basics.h>
6#include <OpenXRPlugin/OpenXRIncludes.h>
7
8class plOpenXR;
9
10class PL_OPENXRPLUGIN_DLL plOpenXRHandTracking : public plXRHandTrackingInterface
11{
12 PL_DECLARE_SINGLETON_OF_INTERFACE(plOpenXRHandTracking, plXRHandTrackingInterface);
13
14public:
15 static bool IsHandTrackingSupported(plOpenXR* pOpenXR);
16
17public:
20
23
24 void UpdateJointTransforms();
25
26private:
27 friend class plOpenXR;
28
29 struct JointData
30 {
31 PL_DECLARE_POD_TYPE();
32 plXRHandBone m_Bone;
33 bool m_bValid;
34 };
35
36 plOpenXR* m_pOpenXR = nullptr;
37 XrHandTrackerEXT m_HandTracker[2] = {XR_NULL_HANDLE, XR_NULL_HANDLE};
38 XrHandJointLocationEXT m_JointLocations[2][XR_HAND_JOINT_COUNT_EXT];
39 XrHandJointVelocityEXT m_JointVelocities[2][XR_HAND_JOINT_COUNT_EXT];
40 XrHandJointLocationsEXT m_Locations[2]{XR_TYPE_HAND_JOINT_LOCATIONS_EXT};
41 XrHandJointVelocitiesEXT m_Velocities[2]{XR_TYPE_HAND_JOINT_VELOCITIES_EXT};
42
44 plStaticArray<plUInt32, 6> m_HandParts[plXRHandPart::Little + 1];
45};
Definition DynamicArray.h:81
Definition OpenXRHandTracking.h:11
Definition OpenXRSingleton.h:25
Wraps a C-style array, which has a fixed size at compile-time, with a more convenient interface.
Definition StaticArray.h:13
XR Hand tracking interface.
Definition XRHandTrackingInterface.h:44
HandPartTrackingState
Definition XRHandTrackingInterface.h:47
virtual HandPartTrackingState TryGetBoneTransforms(plEnum< plXRHand > hand, plEnum< plXRHandPart > handPart, plEnum< plXRTransformSpace > space, plDynamicArray< plXRHandBone > &out_bones)=0
Returns a array of bones in the given part of the hand.
A custom enum implementation that allows to define the underlying storage type to control its memory ...
Definition Enum.h:37
Definition XRHandTrackingInterface.h:35