// 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 FBodyTrackingXRPtr; typedef TSharedPtr FEyeTrackingXRPtr; typedef TSharedPtr FFaceTrackingXRPtr; class FOculusXRMovementModule : public IOculusXRMovementModule { public: FOculusXRMovementModule(); static inline FOculusXRMovementModule& Get() { return FModuleManager::LoadModuleChecked("OculusXRMovement"); } virtual void StartupModule() override; virtual void ShutdownModule() override; /* Live link */ virtual TSharedPtr 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 MovementSource{ nullptr }; }; #undef LOCTEXT_NAMESPACE