// @lint-ignore-every LICENSELINT // Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "IOculusXRMRModule.h" #include "Engine/EngineBaseTypes.h" #define LOCTEXT_NAMESPACE "OculusXRMR" enum class EOculusXRMR_CompositionMethod : uint8; enum class EOculusXRMR_DepthQuality : uint8; class UOculusXRMR_Settings; class AOculusXRMR_CastingCameraActor; class UOculusXRMR_State; //------------------------------------------------------------------------------------------------- // FOculusXRInputModule //------------------------------------------------------------------------------------------------- class FOculusXRMRModule : public IOculusXRMRModule { public: FOculusXRMRModule(); ~FOculusXRMRModule(); static inline FOculusXRMRModule& Get() { return FModuleManager::GetModuleChecked("OculusXRMR"); } // IOculusXRMRModule virtual void StartupModule() override; virtual void ShutdownModule() override; bool IsInitialized() { return bInitialized; } bool IsActive(); UOculusXRMR_Settings* GetMRSettings(); UOculusXRMR_State* GetMRState(); private: bool bInitialized; UOculusXRMR_Settings* MRSettings; UOculusXRMR_State* MRState; AOculusXRMR_CastingCameraActor* MRActor; UWorld* CurrentWorld; FDelegateHandle WorldAddedEventBinding; FDelegateHandle WorldDestroyedEventBinding; FDelegateHandle WorldLoadEventBinding; void InitMixedRealityCapture(); /** Initialize the tracked physical camera */ void SetupExternalCamera(); /** Set up the needed settings and actors for MRC in-game */ void SetupInGameCapture(); /** Destroy actors for MRC in-game */ void CloseInGameCapture(); /** Reset all the MRC settings and state to the config and default */ void ResetSettingsAndState(); /** Handle changes on specific settings */ void OnCompositionMethodChanged(EOculusXRMR_CompositionMethod OldVal, EOculusXRMR_CompositionMethod NewVal); void OnIsCastingChanged(bool OldVal, bool NewVal); void OnUseDynamicLightingChanged(bool OldVal, bool NewVal); void OnDepthQualityChanged(EOculusXRMR_DepthQuality OldVal, EOculusXRMR_DepthQuality NewVal); void OnTrackedCameraIndexChanged(int OldVal, int NewVal); void OnWorldCreated(UWorld* NewWorld); void OnWorldDestroyed(UWorld* NewWorld); #if PLATFORM_ANDROID bool bActivated; FDelegateHandle InitialWorldAddedEventBinding; FDelegateHandle InitialWorldLoadEventBinding; FDelegateHandle PreWorldTickEventBinding; void ChangeCaptureState(); void OnWorldTick(UWorld* World, ELevelTick Tick, float Delta); void OnInitialWorldCreated(UWorld* NewWorld); #endif #if WITH_EDITOR FDelegateHandle PieBeginEventBinding; FDelegateHandle PieStartedEventBinding; FDelegateHandle PieEndedEventBinding; void OnPieBegin(bool bIsSimulating); void OnPieStarted(bool bIsSimulating); void OnPieEnded(bool bIsSimulating); #endif }; #undef LOCTEXT_NAMESPACE