Files
2025-05-18 13:04:45 +08:00

45 lines
2.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
// This interface allows OpenXR specific modules to access an OpenXR specific api for OpenXRHMD, avoiding the need
// to directly access FOpenXRHMD.
// See also IXRTrackingSystem::GetIOpenXRHMD().
#include "CoreMinimal.h"
#include <openxr/openxr.h>
enum class EOpenXRAPIVersion : uint32;
class IOpenXRHMD
{
public:
OPENXRHMD_API virtual void SetInputModule(class IOpenXRInputModule* InInputModule) = 0;
OPENXRHMD_API virtual bool IsInitialized() const = 0;
OPENXRHMD_API virtual bool IsRunning() const = 0;
OPENXRHMD_API virtual bool IsFocused() const = 0;
OPENXRHMD_API virtual int32 AddTrackedDevice(XrAction Action, XrPath Path) = 0;
OPENXRHMD_API virtual int32 AddTrackedDevice(XrAction Action, XrPath Path, XrPath SubactionPath) = 0;
OPENXRHMD_API virtual void ResetTrackedDevices() = 0;
OPENXRHMD_API virtual XrPath GetTrackedDevicePath(const int32 DeviceId) = 0;
OPENXRHMD_API virtual XrSpace GetTrackedDeviceSpace(const int32 DeviceId) = 0;
OPENXRHMD_API virtual bool IsExtensionEnabled(const FString& Name) const = 0;
OPENXRHMD_API virtual bool IsOpenXRAPIVersionMet(EOpenXRAPIVersion Version) const = 0;
OPENXRHMD_API virtual XrInstance GetInstance() = 0;
OPENXRHMD_API virtual XrSystemId GetSystem() = 0;
OPENXRHMD_API virtual XrSession GetSession() = 0;
OPENXRHMD_API virtual XrTime GetDisplayTime() const = 0;
OPENXRHMD_API virtual XrSpace GetTrackingSpace() const = 0;
OPENXRHMD_API virtual class IOpenXRExtensionPluginDelegates& GetIOpenXRExtensionPluginDelegates() = 0;
OPENXRHMD_API virtual bool GetIsTracked(int32 DeviceId) = 0;
OPENXRHMD_API virtual bool GetPoseForTime(int32 DeviceId, FTimespan Timespan, bool& OutTimeWasUsed, FQuat& CurrentOrientation, FVector& CurrentPosition, bool& bProvidedLinearVelocity, FVector& LinearVelocity, bool& bProvidedAngularVelocity, FVector& AngularVelocityAsAxisAndLength, bool& bProvidedLinearAcceleration, FVector& LinearAcceleration, float WorldToMetersScale) = 0;
OPENXRHMD_API virtual TArray<class IOpenXRExtensionPlugin*>& GetExtensionPlugins() = 0;
};