204 lines
7.4 KiB
C++
204 lines
7.4 KiB
C++
// Copyright PICO Technology Co., Ltd. All rights reserved.
|
|
// This plugin incorporates portions of the Unreal® Engine. Unreal® is a trademark or registered trademark of Epic Games, Inc. in the United States of America and elsewhere.
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "PXR_MotionTrackingFunctionLibrary.h"
|
|
#include "PXR_HMDPrivate.h"
|
|
#include "PXR_MotionTracking.h"
|
|
#include "PXR_HMD.h"
|
|
#include "PXR_InputFunctionLibrary.h"
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::GetFaceTrackingSupported(bool& Supported, TArray<EPXRFaceTrackingMode>& SupportedModes)
|
|
{
|
|
return PICOXRMotionTracking::GetFaceTrackingSupported(Supported, SupportedModes);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::GetFaceTrackingState(bool& IsTracking, FPXRFaceTrackingState& TrackingState)
|
|
{
|
|
return PICOXRMotionTracking::GetFaceTrackingState(IsTracking, TrackingState);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::StartFaceTracking(const FPXRFaceTrackingStartInfo& StartInfo)
|
|
{
|
|
return PICOXRMotionTracking::StartFaceTracking(StartInfo);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::StopFaceTracking(const FPXRFaceTrackingStopInfo& StopInfo)
|
|
{
|
|
return PICOXRMotionTracking::StopFaceTracking(StopInfo);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::GetFaceTrackingData(const FPXRFaceTrackingDataGetInfo& GetInfo, FPXRFaceTrackingData& OutFaceTrackingData)
|
|
{
|
|
return PICOXRMotionTracking::GetFaceTrackingData(GetInfo, OutFaceTrackingData);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::GetEyeTrackingSupported(bool& Supported, TArray<EPXREyeTrackingMode>& SupportedModes)
|
|
{
|
|
return PICOXRMotionTracking::GetEyeTrackingSupported(Supported, SupportedModes);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::GetEyeTrackingState(bool& IsTracking, FPXREyeTrackingState& TrackingState)
|
|
{
|
|
return PICOXRMotionTracking::GetEyeTrackingState(IsTracking, TrackingState);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::StartEyeTracking(const FPXREyeTrackingStartInfo& StartInfo)
|
|
{
|
|
return PICOXRMotionTracking::StartEyeTracking(StartInfo);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::StopEyeTracking(const FPXREyeTrackingStopInfo& StopInfo)
|
|
{
|
|
return PICOXRMotionTracking::StopEyeTracking(StopInfo);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::GetEyeTrackingData(float WorldToMetersScale, const FPXREyeTrackingDataGetInfo& GetInfo, FPXREyeTrackingData& OutEyeTrackingData)
|
|
{
|
|
return PICOXRMotionTracking::GetEyeTrackingData(WorldToMetersScale, GetInfo, OutEyeTrackingData);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::GetEyeOpenness(float& LeftEyeOpenness, float& RightEyeOpenness)
|
|
{
|
|
return PICOXRMotionTracking::GetEyeOpenness(LeftEyeOpenness, RightEyeOpenness);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::GetEyePupilInfo(FPXREyePupilInfo& EyePupilInfo)
|
|
{
|
|
return PICOXRMotionTracking::GetEyePupilInfo(EyePupilInfo);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::GetPerEyePose(int64& Timestamp, FTransform& LeftEyePose, FTransform& RightEyePose)
|
|
{
|
|
return PICOXRMotionTracking::GetPerEyePose(Timestamp, LeftEyePose, RightEyePose);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::GetEyeBlink(int64& Timestamp, bool& bLeftBlink, bool& bRightBlink)
|
|
{
|
|
return PICOXRMotionTracking::GetEyeBlink(Timestamp, bLeftBlink, bRightBlink);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_WantBodyTrackingService()
|
|
{
|
|
return PICOXRMotionTracking::WantBodyTrackingService();
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetBodyTrackingSupported(bool& Supported)
|
|
{
|
|
return PICOXRMotionTracking::GetBodyTrackingSupported(Supported);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetBodyTrackingState(bool& IsTracking, FPXRBodyTrackingState& TrackingState)
|
|
{
|
|
return PICOXRMotionTracking::GetBodyTrackingState(IsTracking,TrackingState);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_StartBodyTracking(const FPXRBodyTrackingStartInfo& StartInfo)
|
|
{
|
|
return PICOXRMotionTracking::StartBodyTracking(StartInfo);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_StopBodyTracking(const FPXRBodyTrackingStopInfo& StopInfo)
|
|
{
|
|
return PICOXRMotionTracking::StopBodyTracking(StopInfo);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetBodyTrackingData(float WorldToMetersScale, const FPXRBodyTrackingDataGetInfo& GetInfo, FPXRBodyTrackingData& BodyTrackingData)
|
|
{
|
|
return PICOXRMotionTracking::GetBodyTrackingData(WorldToMetersScale,GetInfo,BodyTrackingData);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_StartMotionTrackerCalibApp()
|
|
{
|
|
EPXRMotionTrackerType CurrentType={};
|
|
|
|
if (PXR_GetMotionTrackerDeviceType(CurrentType))
|
|
{
|
|
switch (CurrentType) {
|
|
case EPXRMotionTrackerType::PXR_UNKNOWN:
|
|
{
|
|
return false;
|
|
}
|
|
break;
|
|
case EPXRMotionTrackerType::PXR_MOTION_TRACKER_1:
|
|
{
|
|
return PICOXRMotionTracking::StartMotionTrackerCalibApp(PICOXRMotionTracking::GetAndroidPackageName(),0);
|
|
}
|
|
break;
|
|
case EPXRMotionTrackerType::PXR_MOTION_TRACKER_2:
|
|
{
|
|
return PICOXRMotionTracking::StartMotionTrackerCalibApp(PICOXRMotionTracking::GetAndroidPackageName(),1);
|
|
}
|
|
break;
|
|
default: ;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetMotionTrackerConnectStateWithSN(FPXRMotionConnectState& connectState)
|
|
{
|
|
return PICOXRMotionTracking::GetMotionTrackerConnectState(connectState);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetMotionTrackerDeviceType(EPXRMotionTrackerType& trackerType)
|
|
{
|
|
return PICOXRMotionTracking::GetMotionTrackerType(trackerType);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetMotionTrackerMode(EPXRMotionTrackerMode& trackerMode)
|
|
{
|
|
return PICOXRMotionTracking::GetMotionTrackerMode(trackerMode);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetMotionTrackerLocations(float WorldToMetersScale, const FString& trackerSN, FPXRMotionTrackerLocations& locations,EPXRMotionTrackerConfidence& Confidence)
|
|
{
|
|
if (!trackerSN.IsEmpty())
|
|
{
|
|
return PICOXRMotionTracking::GetMotionTrackerLocations(WorldToMetersScale,trackerSN,locations,Confidence);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void UPICOXRMotionTrackingFunctionLibrary::PXR_CheckMotionTrackerModeAndNumber(EPXRMotionTrackerMode trackerType, int32 TrackerNumber)
|
|
{
|
|
PICOXRMotionTracking::CheckMotionTrackerModeAndNumber(trackerType,TrackerNumber);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetExtDevTrackerConnectState(FPXRExtDevTrackerConnectState& connectState)
|
|
{
|
|
return PICOXRMotionTracking::GetExtDevTrackerConnectState(connectState);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_SetExtDevTrackerMotorVibrate(const FPXRExtDevTrackerMotorVibrate& motorVibrate)
|
|
{
|
|
return PICOXRMotionTracking::SetExtDevTrackerMotorVibrate(motorVibrate);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_SetExtDevTrackerPassDataState(bool State)
|
|
{
|
|
return PICOXRMotionTracking::SetExtDevTrackerPassDataState(State);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_SetExtDevTrackerByPassData(const FPXRExtDevTrackerPassData& passData)
|
|
{
|
|
return PICOXRMotionTracking::SetExtDevTrackerByPassData(passData);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetExtDevTrackerByPassData(TArray<FPXRExtDevTrackerPassData>& PassDatas)
|
|
{
|
|
return PICOXRMotionTracking::GetExtDevTrackerByPassData(PassDatas);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetExtDevTrackerBattery(const FString& trackerSN, int32& out_battery, int32& out_charger)
|
|
{
|
|
return PICOXRMotionTracking::GetExtDevTrackerBattery(trackerSN,out_battery,out_charger);
|
|
}
|
|
|
|
bool UPICOXRMotionTrackingFunctionLibrary::PXR_GetExtDevTrackerKeyData(const FString& trackerSN, FPXRExtDevTrackerKeyData& keyData)
|
|
{
|
|
return PICOXRMotionTracking::GetExtDevTrackerKeyData(trackerSN,keyData);
|
|
}
|