55 lines
1.8 KiB
C++

// Copyright (c) Meta Platforms, Inc. and affiliates.
#pragma once
#include "openxr/OculusXRBodyTrackingXR.h"
#include "openxr/OculusXREyeTrackingXR.h"
#include "openxr/OculusXRFaceTrackingXR.h"
#include "OculusXRMovement.h"
#include "OculusXRMovementLiveLink.h"
#include "IOculusXRMovementModule.h"
#include "ILiveLinkSource.h"
#define LOCTEXT_NAMESPACE "OculusXRMovement"
//-------------------------------------------------------------------------------------------------
// FOculusXRMovementModule
//-------------------------------------------------------------------------------------------------
typedef TSharedPtr<XRMovement::FBodyTrackingXR, ESPMode::ThreadSafe> FBodyTrackingXRPtr;
typedef TSharedPtr<XRMovement::FEyeTrackingXR, ESPMode::ThreadSafe> FEyeTrackingXRPtr;
typedef TSharedPtr<XRMovement::FFaceTrackingXR, ESPMode::ThreadSafe> FFaceTrackingXRPtr;
class FOculusXRMovementModule : public IOculusXRMovementModule
{
public:
FOculusXRMovementModule();
static inline FOculusXRMovementModule& Get()
{
return FModuleManager::LoadModuleChecked<FOculusXRMovementModule>("OculusXRMovement");
}
virtual void StartupModule() override;
virtual void ShutdownModule() override;
/* Live link */
virtual TSharedPtr<ILiveLinkSource> GetLiveLinkSource() override;
virtual bool IsLiveLinkSourceValid() const override;
virtual void AddLiveLinkSource() override;
virtual void RemoveLiveLinkSource() override;
FBodyTrackingXRPtr GetXrBodyTracker() { return BodyTrackingXR; }
FEyeTrackingXRPtr GetXrEyeTracker() { return EyeTrackingXR; }
FFaceTrackingXRPtr GetXrFaceTracker() { return FaceTrackingXR; }
private:
FBodyTrackingXRPtr BodyTrackingXR;
FEyeTrackingXRPtr EyeTrackingXR;
FFaceTrackingXRPtr FaceTrackingXR;
TSharedPtr<MetaXRMovement::LiveLinkSource> MovementSource{ nullptr };
};
#undef LOCTEXT_NAMESPACE