55 lines
1.8 KiB
C++
55 lines
1.8 KiB
C++
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
|
|
#pragma once
|
|
|
|
#include "OculusXRColocationXRIncludes.h"
|
|
#include "IOpenXRExtensionPlugin.h"
|
|
#include "OculusXRColocationTypes.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "OculusXRColocation"
|
|
|
|
class FOpenXRHMD;
|
|
|
|
namespace XRColocation
|
|
{
|
|
extern PFN_xrStartColocationDiscoveryMETA xrStartColocationDiscoveryMETA;
|
|
extern PFN_xrStopColocationDiscoveryMETA xrStopColocationDiscoveryMETA;
|
|
extern PFN_xrStartColocationAdvertisementMETA xrStartColocationAdvertisementMETA;
|
|
extern PFN_xrStopColocationAdvertisementMETA xrStopColocationAdvertisementMETA;
|
|
|
|
class FColocationXR : public IOpenXRExtensionPlugin
|
|
{
|
|
public:
|
|
// IOculusXROpenXRHMDPlugin
|
|
virtual bool GetRequiredExtensions(TArray<const ANSICHAR*>& OutExtensions) override;
|
|
virtual bool GetOptionalExtensions(TArray<const ANSICHAR*>& OutExtensions) override;
|
|
virtual const void* OnCreateInstance(class IOpenXRHMDModule* InModule, const void* InNext) override;
|
|
virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override;
|
|
virtual void OnDestroySession(XrSession InSession) override;
|
|
virtual void OnEvent(XrSession InSession, const XrEventDataBaseHeader* InHeader) override;
|
|
|
|
public:
|
|
FColocationXR();
|
|
virtual ~FColocationXR();
|
|
|
|
void RegisterAsOpenXRExtension();
|
|
|
|
bool IsColocationDiscoveryEnabled() const { return bExtColocationDiscoveryEnabled; }
|
|
|
|
XrResult StartColocationDiscovery(uint64& OutRequestId);
|
|
XrResult StopColocationDiscovery(uint64& OutRequestId);
|
|
XrResult StartColocationAdvertisement(const TArray<uint8>& Metadata, uint64& OutRequestId);
|
|
XrResult StopColocationAdvertisement(uint64& OutRequestId);
|
|
|
|
private:
|
|
void InitOpenXRFunctions(XrInstance InInstance);
|
|
|
|
bool bExtColocationDiscoveryEnabled;
|
|
|
|
FOpenXRHMD* OpenXRHMD;
|
|
};
|
|
|
|
} // namespace XRColocation
|
|
|
|
#undef LOCTEXT_NAMESPACE
|