October3d55/Matain/ViveOpenXR/Source/ViveOpenXREyeTracker/Private/ViveOpenXREyeTrackerFunctio...

56 lines
1.5 KiB
C++
Raw Normal View History

2025-03-10 09:43:27 +08:00
// Copyright HTC Corporation. All Rights Reserved.
#include "ViveOpenXREyeTrackerFunctionLibrary.h"
#include "ViveOpenXREyeTracker.h"
#include "OpenXRHMD.h"
static FViveOpenXREyeTracker* FViveOpenXREyeTrackerPtr = nullptr;
FViveOpenXREyeTracker* GetViveOpenXREyeTrackerModulePtr()
{
if (FViveOpenXREyeTrackerPtr != nullptr)
{
return FViveOpenXREyeTrackerPtr;
}
else
{
if (GEngine->XRSystem.IsValid())
{
auto HMD = static_cast<FOpenXRHMD*>(GEngine->XRSystem->GetHMDDevice());
for (IOpenXRExtensionPlugin* Module : HMD->GetExtensionPlugins())
{
if (Module->GetDisplayName() == TEXT("ViveOpenXREyeTracker"))
{
FViveOpenXREyeTrackerPtr = static_cast<FViveOpenXREyeTracker*>(Module);
break;
}
}
}
return FViveOpenXREyeTrackerPtr;
}
}
FXrGazeDataHTC UViveOpenXREyeTrackerFunctionLibrary::GetHTCEyeGazeValidData()
{
FXrGazeDataHTC OutGazeValidData;
if (!GetViveOpenXREyeTrackerModulePtr()) return OutGazeValidData;
return GetViveOpenXREyeTrackerModulePtr()->GetEyeGazeValidDatas();
}
FXrPupilDataHTC UViveOpenXREyeTrackerFunctionLibrary::GetHTCPupilData()
{
FXrPupilDataHTC OutPupilData;
if (!GetViveOpenXREyeTrackerModulePtr()) return OutPupilData;
return GetViveOpenXREyeTrackerModulePtr()->GetPupilDatas();
}
FXrEyeGeometricDataHTC UViveOpenXREyeTrackerFunctionLibrary::GetHTCEyeGeometricData()
{
FXrEyeGeometricDataHTC OutEyeGeometricData;
if (!GetViveOpenXREyeTrackerModulePtr()) return OutEyeGeometricData;
return GetViveOpenXREyeTrackerModulePtr()->GetEyeGeometricDatas();
}