29 lines
972 B
C++
29 lines
972 B
C++
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
|
|
#include "OculusXRColocationFunctions.h"
|
|
#include "OculusXRColocationFunctionsOVR.h"
|
|
#include "OculusXRColocationFunctionsOpenXR.h"
|
|
#include "IOpenXRHMD.h"
|
|
#include "OculusXRHMD.h"
|
|
|
|
TSharedPtr<IOculusXRColocationFunctions> IOculusXRColocationFunctions::ColocationFunctionsImpl = nullptr;
|
|
TSharedPtr<IOculusXRColocationFunctions> IOculusXRColocationFunctions::GetOculusXRColocationFunctionsImpl()
|
|
{
|
|
if (ColocationFunctionsImpl == nullptr)
|
|
{
|
|
const FName SystemName(TEXT("OpenXR"));
|
|
const bool IsOpenXR = GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName);
|
|
if (OculusXRHMD::FOculusXRHMD::GetOculusXRHMD() != nullptr)
|
|
{
|
|
ColocationFunctionsImpl = MakeShared<FOculusXRColocationFunctionsOVR>();
|
|
}
|
|
else if (IsOpenXR)
|
|
{
|
|
ColocationFunctionsImpl = MakeShared<FOculusXRColocationFunctionsOpenXR>();
|
|
}
|
|
}
|
|
|
|
check(ColocationFunctionsImpl);
|
|
return ColocationFunctionsImpl;
|
|
}
|