diff --git a/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp b/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp index ccbd07f7..8f4cf8dd 100644 --- a/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp +++ b/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp @@ -2154,7 +2154,23 @@ FName FSGXRTracker::FImpl::GetTargetOpenXRPositionalTrackingProviderName() const } else { - PositionalTrackingProvider = ESGOpenXRPositionalTrackingProvider::OpenXR; + const bool bIsAMetaQuestDevice = FSGHMDTracker::IsAMetaQuestDevice(); + if (bIsAMetaQuestDevice) + { + const bool bIsMetaXRPluginLoaded = FSGPluginUtils::IsMetaXRPluginAvailable(); + if (bIsMetaXRPluginLoaded) + { + PositionalTrackingProvider = ESGOpenXRPositionalTrackingProvider::OpenXRHandTracking; + } + else + { + PositionalTrackingProvider = ESGOpenXRPositionalTrackingProvider::OpenXR; + } + } + else + { + PositionalTrackingProvider = ESGOpenXRPositionalTrackingProvider::OpenXR; + } } } @@ -2211,6 +2227,12 @@ bool FSGXRTracker::FImpl::GetControllerTransform( continue; } + const FSGXRTracker* Self{StaticCast(MotionController)}; + if (Self) + { + continue; + } + const ETrackingStatus TrackingStatus = MotionController->GetControllerTrackingStatus( DeviceIndex, PositionalTrackingHardwareMotionSource); if (TrackingStatus == ETrackingStatus::NotTracked) diff --git a/Source/SenseGloveTypes/Public/SGTypes/SGTrackingTypes.h b/Source/SenseGloveTypes/Public/SGTypes/SGTrackingTypes.h index 16a7dae9..8cf192ae 100644 --- a/Source/SenseGloveTypes/Public/SGTypes/SGTrackingTypes.h +++ b/Source/SenseGloveTypes/Public/SGTypes/SGTrackingTypes.h @@ -84,6 +84,10 @@ enum class ESGOpenXRPositionalTrackingProvider : uint8 */ OpenXR UMETA(DisplayName = "OpenXR"), + /** + */ + OpenXRHandTracking UMETA(DisplayName = "OpenXRHandTracking"), + /** * OpenXRViveTracker: * - PCVR: