VRTowerDef/Plugins/MetaXR/Source/OculusXRMR/Private/OculusXRMRModule.h

98 lines
2.8 KiB
C++

// @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<FOculusXRMRModule>("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