October3d55/M/PICOXRPlugin/Source/PICOXRHMD/Private/PXR_PluginWrapper.h

325 lines
13 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.
#pragma once
#include "CoreMinimal.h"
#include <memory.h>
#if PLATFORM_SUPPORTS_PRAGMA_PACK
#pragma pack (push,8)
#endif
#if PLATFORM_WINDOWS
#include "Windows/AllowWindowsPlatformTypes.h"
#endif
#pragma warning(push)
#pragma warning(disable:4201) // nonstandard extension used: nameless struct/union
//#pragma warning(disable:4668) // 'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives'
#define PVRP_EXPORT typedef
#include "PXR_Plugin.h"
#undef PVRP_EXPORT
#pragma warning(pop)
#if PLATFORM_WINDOWS
#include "Windows/HideWindowsPlatformTypes.h"
#endif
#if PLATFORM_SUPPORTS_PRAGMA_PACK
#pragma pack (pop)
#endif
#if PLATFORM_WINDOWS
#include "Windows/WindowsHWrapper.h"
#endif
DECLARE_LOG_CATEGORY_EXTERN(LogPICOPluginWrapper, Log, All);
#define PICO_DECLARE_ENTRY_POINT(Func) Pxr_##Func* Func
struct PICOPluginWrapper
{
PICOPluginWrapper()
{
Reset();
}
void Reset()
{
memset(this, 0, sizeof(PICOPluginWrapper));
}
bool Initialized;
bool bIsSessionInitialized;
// PXRPlugin.h
PICO_DECLARE_ENTRY_POINT(SetGraphicOption);
PICO_DECLARE_ENTRY_POINT(SetPlatformOption);
PICO_DECLARE_ENTRY_POINT(IsInitialized);
PICO_DECLARE_ENTRY_POINT(SetInitializeData);
PICO_DECLARE_ENTRY_POINT(Initialize);
PICO_DECLARE_ENTRY_POINT(Shutdown);
PICO_DECLARE_ENTRY_POINT(GetDeviceExtensionsVk);
PICO_DECLARE_ENTRY_POINT(GetInstanceExtensionsVk);
PICO_DECLARE_ENTRY_POINT(CreateVulkanSystem);
PICO_DECLARE_ENTRY_POINT(GetFeatureSupported);
PICO_DECLARE_ENTRY_POINT(CreateLayer);
PICO_DECLARE_ENTRY_POINT(GetLayerImageCount);
PICO_DECLARE_ENTRY_POINT(GetLayerImageExt);
PICO_DECLARE_ENTRY_POINT(GetLayerImage);
PICO_DECLARE_ENTRY_POINT(GetLayerNextImageIndex);
PICO_DECLARE_ENTRY_POINT(GetLayerFoveationImage);
PICO_DECLARE_ENTRY_POINT(DestroyLayer);
PICO_DECLARE_ENTRY_POINT(IsRunning);
PICO_DECLARE_ENTRY_POINT(BeginXr);
PICO_DECLARE_ENTRY_POINT(EndXr);
PICO_DECLARE_ENTRY_POINT(GetPredictedDisplayTime);
PICO_DECLARE_ENTRY_POINT(GetPredictedMainSensorState);
PICO_DECLARE_ENTRY_POINT(GetPredictedMainSensorState2);
PICO_DECLARE_ENTRY_POINT(GetPredictedMainSensorStateWithEyePose);
PICO_DECLARE_ENTRY_POINT(ResetSensor);
PICO_DECLARE_ENTRY_POINT(WaitFrame);
PICO_DECLARE_ENTRY_POINT(BeginFrame);
PICO_DECLARE_ENTRY_POINT(SubmitLayer);
PICO_DECLARE_ENTRY_POINT(SubmitLayer2);
PICO_DECLARE_ENTRY_POINT(EndFrame);
PICO_DECLARE_ENTRY_POINT(GetDeviceName);
PICO_DECLARE_ENTRY_POINT(PollEvent);
PICO_DECLARE_ENTRY_POINT(LogPrint);
PICO_DECLARE_ENTRY_POINT(GetFov);
PICO_DECLARE_ENTRY_POINT(GetFrustum);
PICO_DECLARE_ENTRY_POINT(SetPerformanceLevels);
PICO_DECLARE_ENTRY_POINT(GetPerformanceLevels);
PICO_DECLARE_ENTRY_POINT(SetColorSpace);
PICO_DECLARE_ENTRY_POINT(GetFoveationLevel);
PICO_DECLARE_ENTRY_POINT(SetFoveationLevel);
PICO_DECLARE_ENTRY_POINT(SetFoveationParams);
PICO_DECLARE_ENTRY_POINT(SetTrackingMode);
PICO_DECLARE_ENTRY_POINT(GetTrackingMode);
PICO_DECLARE_ENTRY_POINT(GetEyeTrackingData);
PICO_DECLARE_ENTRY_POINT(GetFaceTrackingData);
PICO_DECLARE_ENTRY_POINT(SetTrackingOrigin);
PICO_DECLARE_ENTRY_POINT(GetTrackingOrigin);
PICO_DECLARE_ENTRY_POINT(GetIPD);
PICO_DECLARE_ENTRY_POINT(GetEyeOrientation);
PICO_DECLARE_ENTRY_POINT(GetAppHasFocus);
PICO_DECLARE_ENTRY_POINT(GetConfigInt);
PICO_DECLARE_ENTRY_POINT(GetConfigFloat);
PICO_DECLARE_ENTRY_POINT(SetConfigFloatArray);
PICO_DECLARE_ENTRY_POINT(SetConfigInt);
PICO_DECLARE_ENTRY_POINT(SetConfigString);
PICO_DECLARE_ENTRY_POINT(SetConfigUint64);
PICO_DECLARE_ENTRY_POINT(GetBoundaryConfigured);
PICO_DECLARE_ENTRY_POINT(GetBoundaryEnabled);
PICO_DECLARE_ENTRY_POINT(SetBoundaryVisible);
PICO_DECLARE_ENTRY_POINT(SetSeeThroughBackground);
PICO_DECLARE_ENTRY_POINT(GetBoundaryVisible);
PICO_DECLARE_ENTRY_POINT(TestNodeIsInBoundary);
PICO_DECLARE_ENTRY_POINT(TestPointIsInBoundary);
PICO_DECLARE_ENTRY_POINT(GetBoundaryGeometry);
PICO_DECLARE_ENTRY_POINT(GetBoundaryDimensions);
PICO_DECLARE_ENTRY_POINT(EnableMultiview);
PICO_DECLARE_ENTRY_POINT(GetExternalCameraInfo);
PICO_DECLARE_ENTRY_POINT(GetExternalCameraPose);
PICO_DECLARE_ENTRY_POINT(SetIsSupportMovingMrc);
PICO_DECLARE_ENTRY_POINT(SetSensorLostCustomMode);
PICO_DECLARE_ENTRY_POINT(SetSensorLostCMST);
PICO_DECLARE_ENTRY_POINT(GetDisplayRefreshRatesAvailable);
PICO_DECLARE_ENTRY_POINT(SetDisplayRefreshRate);
PICO_DECLARE_ENTRY_POINT(GetDisplayRefreshRate);
PICO_DECLARE_ENTRY_POINT(SetExtraLatencyMode);
PICO_DECLARE_ENTRY_POINT(getPsensorState);
PICO_DECLARE_ENTRY_POINT(GetControllerCapabilities);
PICO_DECLARE_ENTRY_POINT(GetControllerConnectStatus);
PICO_DECLARE_ENTRY_POINT(GetControllerTrackingState);
PICO_DECLARE_ENTRY_POINT(GetControllerInputState);
PICO_DECLARE_ENTRY_POINT(SetControllerVibration);
PICO_DECLARE_ENTRY_POINT(SetControllerVibrationEvent);
PICO_DECLARE_ENTRY_POINT(SetControllerEnableKey);
PICO_DECLARE_ENTRY_POINT(SetControllerMainInputHandle);
PICO_DECLARE_ENTRY_POINT(GetControllerMainInputHandle);
PICO_DECLARE_ENTRY_POINT(StopControllerVCMotor);
PICO_DECLARE_ENTRY_POINT(StartControllerVCMotor);
PICO_DECLARE_ENTRY_POINT(SetControllerAmp);
PICO_DECLARE_ENTRY_POINT(SetControllerDelay);
PICO_DECLARE_ENTRY_POINT(GetVibrateDelayTime);
PICO_DECLARE_ENTRY_POINT(StartVibrateBySharemF);
PICO_DECLARE_ENTRY_POINT(StartVibrateBySharemU);
PICO_DECLARE_ENTRY_POINT(StartVibrateByCache);
PICO_DECLARE_ENTRY_POINT(ClearVibrateByCache);
PICO_DECLARE_ENTRY_POINT(StartVibrateByPHF);
PICO_DECLARE_ENTRY_POINT(PauseVibrate);
PICO_DECLARE_ENTRY_POINT(ResumeVibrate);
PICO_DECLARE_ENTRY_POINT(UpdateVibrateParams);
PICO_DECLARE_ENTRY_POINT(CreateHapticStream);
PICO_DECLARE_ENTRY_POINT(WriteHapticStream);
PICO_DECLARE_ENTRY_POINT(SetPHFHapticSpeed);
PICO_DECLARE_ENTRY_POINT(GetPHFHapticSpeed);
PICO_DECLARE_ENTRY_POINT(GetCurrentFrameSequence);
PICO_DECLARE_ENTRY_POINT(StartPHFHaptic);
PICO_DECLARE_ENTRY_POINT(StopPHFHaptic);
PICO_DECLARE_ENTRY_POINT(RemovePHFHaptic);
PICO_DECLARE_ENTRY_POINT(SetAppHandTrackingEnabled);
PICO_DECLARE_ENTRY_POINT(GetHandTrackerSettingState);
PICO_DECLARE_ENTRY_POINT(GetHandTrackerActiveInputType);
PICO_DECLARE_ENTRY_POINT(GetHandTrackerJointLocations);
PICO_DECLARE_ENTRY_POINT(GetHandTrackerAimState);
PICO_DECLARE_ENTRY_POINT(GetHandTrackerAimStateWithPTFG);
PICO_DECLARE_ENTRY_POINT(GetHandTrackerHandScale);
PICO_DECLARE_ENTRY_POINT(GetHandTrackerJointLocationsWithPTFG);
PICO_DECLARE_ENTRY_POINT(GetHandTrackerAimStateWithPT);
PICO_DECLARE_ENTRY_POINT(GetHandTrackerJointLocationsWithPT);
PICO_DECLARE_ENTRY_POINT(LogSdkApi);
//----------------G3 device-------
PICO_DECLARE_ENTRY_POINT(ResetController);
PICO_DECLARE_ENTRY_POINT(SetArmModelParameters);
PICO_DECLARE_ENTRY_POINT(GetControllerHandness);
//----------------G3 device-------
//----------------Body Tracking-------
PICO_DECLARE_ENTRY_POINT(SetBodyTrackingStaticCalibState);
PICO_DECLARE_ENTRY_POINT(SetBodyTrackingMode);
PICO_DECLARE_ENTRY_POINT(GetBodyTrackingPose);
PICO_DECLARE_ENTRY_POINT(GetBodyTrackingImuData);
PICO_DECLARE_ENTRY_POINT(GetFitnessBandConnectState);
PICO_DECLARE_ENTRY_POINT(GetFitnessBandBattery);
PICO_DECLARE_ENTRY_POINT(GetFitnessBandCalibState);
PICO_DECLARE_ENTRY_POINT(SetBodyTrackingAlgParam);
//----------------Body Tracking-------
//----------------Eye Tracking-------
PICO_DECLARE_ENTRY_POINT(WantEyeTrackingService);
PICO_DECLARE_ENTRY_POINT(GetEyeTrackingSupported);
PICO_DECLARE_ENTRY_POINT(StartEyeTracking1);
PICO_DECLARE_ENTRY_POINT(StopEyeTracking1);
PICO_DECLARE_ENTRY_POINT(GetEyeTrackingState);
PICO_DECLARE_ENTRY_POINT(GetEyeTrackingData1);
PICO_DECLARE_ENTRY_POINT(GetEyeOpenness);
PICO_DECLARE_ENTRY_POINT(GetEyePupilInfo);
PICO_DECLARE_ENTRY_POINT(GetPerEyePose);
PICO_DECLARE_ENTRY_POINT(GetEyeBlink);
//----------------Eye Tracking-------
//----------------Face Tracking-------
PICO_DECLARE_ENTRY_POINT(WantFaceTrackingService);
PICO_DECLARE_ENTRY_POINT(GetFaceTrackingSupported);
PICO_DECLARE_ENTRY_POINT(StartFaceTracking);
PICO_DECLARE_ENTRY_POINT(StopFaceTracking);
PICO_DECLARE_ENTRY_POINT(GetFaceTrackingState);
PICO_DECLARE_ENTRY_POINT(GetFaceTrackingData1);
//----------------Face Tracking-------
//----------------New Body Tracking-------
PICO_DECLARE_ENTRY_POINT(WantBodyTrackingService);
PICO_DECLARE_ENTRY_POINT(GetBodyTrackingSupported);
PICO_DECLARE_ENTRY_POINT(StartBodyTracking);
PICO_DECLARE_ENTRY_POINT(StopBodyTracking);
PICO_DECLARE_ENTRY_POINT(GetBodyTrackingState);
PICO_DECLARE_ENTRY_POINT(GetBodyTrackingData);
PICO_DECLARE_ENTRY_POINT(StartBodyTrackingCalibApp);
//----------------New Body Tracking-------
//----------------Standalone Tracker------
PICO_DECLARE_ENTRY_POINT(GetMotionTrackerConnectState);
PICO_DECLARE_ENTRY_POINT(GetMotionTrackerType);
PICO_DECLARE_ENTRY_POINT(GetMotionTrackerMode);
PICO_DECLARE_ENTRY_POINT(GetMotionTrackerLocations);
PICO_DECLARE_ENTRY_POINT(GetMotionTrackerLocationsWithConfidence);
PICO_DECLARE_ENTRY_POINT(CheckMotionTrackerModeAndNumber);
//----------------Standalone Tracker------
//----------------ExtDevTracker----------------
PICO_DECLARE_ENTRY_POINT(GetExtDevTrackerConnectState);
PICO_DECLARE_ENTRY_POINT(SetExtDevTrackerMotorVibrate);
PICO_DECLARE_ENTRY_POINT(SetExtDevTrackerPassDataState);
PICO_DECLARE_ENTRY_POINT(SetExtDevTrackerByPassData);
PICO_DECLARE_ENTRY_POINT(GetExtDevTrackerByPassData);
PICO_DECLARE_ENTRY_POINT(GetExtDevTrackerBattery);
PICO_DECLARE_ENTRY_POINT(GetExtDevTrackerKeyData);
//----------------ExtDevTracker----------------
//----------------MR-------
PICO_DECLARE_ENTRY_POINT(CreateAnchorEntity);
PICO_DECLARE_ENTRY_POINT(DestroyAnchorEntity);
PICO_DECLARE_ENTRY_POINT(GetAnchorPose);
PICO_DECLARE_ENTRY_POINT(GetAnchorEntityUuid);
PICO_DECLARE_ENTRY_POINT(GetAnchorComponentFlags);
PICO_DECLARE_ENTRY_POINT(GetAnchorSceneLabel);
PICO_DECLARE_ENTRY_POINT(GetAnchorPlaneBoundaryInfo);
PICO_DECLARE_ENTRY_POINT(GetAnchorPlanePolygonInfo);
PICO_DECLARE_ENTRY_POINT(GetAnchorBoxInfo);
PICO_DECLARE_ENTRY_POINT(PersistAnchorEntity);
PICO_DECLARE_ENTRY_POINT(UnpersistAnchorEntity);
PICO_DECLARE_ENTRY_POINT(ClearPersistedAnchorEntity);
PICO_DECLARE_ENTRY_POINT(LoadAnchorEntity);
PICO_DECLARE_ENTRY_POINT(GetAnchorEntityLoadResults);
PICO_DECLARE_ENTRY_POINT(StartSpatialSceneCapture);
//----------------MR-------
//----------------MR 3.0-------
/*
* future ext
*/
PICO_DECLARE_ENTRY_POINT(PollFutureEXT);
PICO_DECLARE_ENTRY_POINT(PollFutureWithProgress);
/*
* mr sdk 3.0
*/
PICO_DECLARE_ENTRY_POINT(CreateSenseDataProvider);
PICO_DECLARE_ENTRY_POINT(StartSenseDataProviderAsync);
PICO_DECLARE_ENTRY_POINT(StartSenseDataProviderComplete);
PICO_DECLARE_ENTRY_POINT(GetSenseDataProviderState);
PICO_DECLARE_ENTRY_POINT(QuerySenseDataComplete);
PICO_DECLARE_ENTRY_POINT(DestroySenseDataQueryResult);
PICO_DECLARE_ENTRY_POINT(StopSenseDataProvider);
PICO_DECLARE_ENTRY_POINT(DestroySenseDataProvider);
PICO_DECLARE_ENTRY_POINT(QuerySenseDataAsync);
PICO_DECLARE_ENTRY_POINT(GetQueriedSenseData);
PICO_DECLARE_ENTRY_POINT(GetSpatialEntityUuid);
PICO_DECLARE_ENTRY_POINT(EnumerateSpatialEntityComponentTypes);
PICO_DECLARE_ENTRY_POINT(GetSpatialEntityComponentInfo);
PICO_DECLARE_ENTRY_POINT(RetrieveSpatialEntityAnchor);
PICO_DECLARE_ENTRY_POINT(DestroyAnchor);
PICO_DECLARE_ENTRY_POINT(GetAnchorUuid);
PICO_DECLARE_ENTRY_POINT(LocateAnchor);
PICO_DECLARE_ENTRY_POINT(CreateSpatialAnchorAsync);
PICO_DECLARE_ENTRY_POINT(CreateSpatialAnchorComplete);
PICO_DECLARE_ENTRY_POINT(PersistSpatialAnchorAsync);
PICO_DECLARE_ENTRY_POINT(PersistSpatialAnchorComplete);
PICO_DECLARE_ENTRY_POINT(UnpersistSpatialAnchorAsync);
PICO_DECLARE_ENTRY_POINT(UnpersistSpatialAnchorComplete);
/**
* mr sdk 3.0 scene capture
*/
PICO_DECLARE_ENTRY_POINT(StartSceneCaptureAsync);
PICO_DECLARE_ENTRY_POINT(StartSceneCaptureComplete);
/*
* mr sdk 3.0 cloud anchor
*/
PICO_DECLARE_ENTRY_POINT(ShareSpatialAnchorAsync);
PICO_DECLARE_ENTRY_POINT(ShareSpatialAnchorComplete);
PICO_DECLARE_ENTRY_POINT(DownloadSharedSpatialAnchorAsync);
PICO_DECLARE_ENTRY_POINT(DownloadSharedSpatialAnchorComplete);
//----------------MR 3.0-------
//----------------ETFR-------
PICO_DECLARE_ENTRY_POINT(GetEyeTrackingFoveationRenderingSupported);
PICO_DECLARE_ENTRY_POINT(GetEyeTrackingFoveationRenderingState);
PICO_DECLARE_ENTRY_POINT(SetEyeTrackingFoveationRenderingState);
PICO_DECLARE_ENTRY_POINT(GetEyeTrackingFoveationRenderingCenter);
//----------------ETFR-------
//----------------Adaptive Resolution-------
PICO_DECLARE_ENTRY_POINT(UpdateAdaptiveResolution);
//----------------Adaptive Resolution-------
};
#undef PICO_DECLARE_ENTRY_POINT
bool InitializePICOPluginWrapper(PICOPluginWrapper* wrapper);
void DestroyPICOPluginWrapper(PICOPluginWrapper* wrapper);