55 lines
1.5 KiB
C++

// @lint-ignore-every LICENSELINT
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "IOculusXRSceneModule.h"
#include "OculusXRAnchorsModule.h"
#include "openxr/OculusXRSceneXR.h"
#define LOCTEXT_NAMESPACE "OculusXRScene"
//-------------------------------------------------------------------------------------------------
// FOculusXRSceneModule
//-------------------------------------------------------------------------------------------------
DECLARE_LOG_CATEGORY_EXTERN(LogOculusXRScene, Log, All);
typedef TSharedPtr<XRScene::FSceneXR, ESPMode::ThreadSafe> FSceneXRPtr;
#if OCULUS_SCENE_SUPPORTED_PLATFORMS
class FOculusXRSceneModule : public IOculusXRSceneModule, public IOculusXRCreateAnchorComponent
{
public:
static inline FOculusXRSceneModule& Get()
{
return FModuleManager::LoadModuleChecked<FOculusXRSceneModule>("OculusXRScene");
}
virtual ~FOculusXRSceneModule() = default;
// IModuleInterface interface
virtual void StartupModule() override;
virtual void ShutdownModule() override;
void OnPostEngineInit();
// IOculusXRCreateAnchorComponent
virtual UOculusXRBaseAnchorComponent* TryCreateAnchorComponent(uint64 AnchorHandle, EOculusXRSpaceComponentType Type, UObject* Outer) override;
FSceneXRPtr GetXrScene() { return SceneXR; }
private:
FSceneXRPtr SceneXR;
};
#else // OCULUS_SCENE_SUPPORTED_PLATFORMS
class FOculusXRSceneModule : public FDefaultModuleImpl
{
};
#endif // OCULUS_SCENE_SUPPORTED_PLATFORMS
#undef LOCTEXT_NAMESPACE