Files
UnrealEngineUWP/Engine/Plugins/Runtime/nDisplay/Source/DisplayCluster/Private/DisplayClusterModule.h
andrey yamashev 9388f2bbe3 nDisplay: fixed p-node deadlock on ESC exit
#jira UE-141391
#rnx
#rb Alejandro.Arango
#preflight 6205d2cc69224cb0d88e411a
#lockdown Alejandro.Arango

#ROBOMERGE-AUTHOR: andrey.yamashev
#ROBOMERGE-SOURCE: CL 18949019 in //UE5/Release-5.0/... via CL 18949110 via CL 18949135
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)

[CL 18949140 by andrey yamashev in ue5-main branch]
2022-02-10 23:17:21 -05:00

101 lines
3.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "IPDisplayCluster.h"
#include "DisplayClusterCallbacks.h"
#include "Cluster/IPDisplayClusterClusterManager.h"
#include "Config/IPDisplayClusterConfigManager.h"
#include "Game/IPDisplayClusterGameManager.h"
#include "Render/IPDisplayClusterRenderManager.h"
class UDisplayClusterConfigurationData;
/**
* Display Cluster module implementation
*/
class FDisplayClusterModule :
public IPDisplayCluster
{
public:
FDisplayClusterModule();
virtual ~FDisplayClusterModule();
public:
//////////////////////////////////////////////////////////////////////////////////////////////
// IDisplayCluster
//////////////////////////////////////////////////////////////////////////////////////////////
virtual bool IsModuleInitialized() const override
{
return bIsModuleInitialized;
}
virtual EDisplayClusterOperationMode GetOperationMode() const override
{
return CurrentOperationMode;
}
virtual IDisplayClusterRenderManager* GetRenderMgr() const override { return MgrRender; }
virtual IDisplayClusterClusterManager* GetClusterMgr() const override { return MgrCluster; }
virtual IDisplayClusterConfigManager* GetConfigMgr() const override { return MgrConfig; }
virtual IDisplayClusterGameManager* GetGameMgr() const override { return MgrGame; }
virtual IDisplayClusterCallbacks& GetCallbacks() override
{
return Callbacks;
}
public:
//////////////////////////////////////////////////////////////////////////////////////////////
// IPDisplayCluster
//////////////////////////////////////////////////////////////////////////////////////////////
virtual IPDisplayClusterRenderManager* GetPrivateRenderMgr() const override { return MgrRender; }
virtual IPDisplayClusterClusterManager* GetPrivateClusterMgr() const override { return MgrCluster; }
virtual IPDisplayClusterConfigManager* GetPrivateConfigMgr() const override { return MgrConfig; }
virtual IPDisplayClusterGameManager* GetPrivateGameMgr() const override { return MgrGame; }
public:
//////////////////////////////////////////////////////////////////////////////////////////////
// IPDisplayClusterManager
//////////////////////////////////////////////////////////////////////////////////////////////
virtual bool Init(EDisplayClusterOperationMode OperationMode) override;
virtual void Release() override;
virtual bool StartSession(UDisplayClusterConfigurationData* InConfigData, const FString& NodeId) override;
virtual void EndSession() override;
virtual bool StartScene(UWorld* InWorld) override;
virtual void EndScene() override;
virtual void StartFrame(uint64 FrameNum) override;
virtual void PreTick(float DeltaSeconds) override;
virtual void Tick(float DeltaSeconds) override;
virtual void PostTick(float DeltaSeconds) override;
virtual void EndFrame(uint64 FrameNum) override;
private:
//////////////////////////////////////////////////////////////////////////////////////////////
// IModuleInterface
//////////////////////////////////////////////////////////////////////////////////////////////
virtual void StartupModule() override;
virtual void ShutdownModule() override;
private:
// Is module initialized.
// This flag is not the same as EDisplayClusterOperationMode::Disabled which is used when we turn off the DC functionality in a game mode.
bool bIsModuleInitialized = false;
// DisplayCluster subsystems
IPDisplayClusterClusterManager* MgrCluster = nullptr;
IPDisplayClusterRenderManager* MgrRender = nullptr;
IPDisplayClusterConfigManager* MgrConfig = nullptr;
IPDisplayClusterGameManager* MgrGame = nullptr;
// Array of available managers
TArray<IPDisplayClusterManager*> Managers;
FDisplayClusterCallbacks Callbacks;
// Runtime
EDisplayClusterOperationMode CurrentOperationMode = EDisplayClusterOperationMode::Disabled;
};