2019-12-27 09:26:59 -05:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
2018-06-07 18:49:50 -04:00
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "IPDisplayCluster.h"
|
2021-11-18 14:37:34 -05:00
|
|
|
#include "DisplayClusterCallbacks.h"
|
2018-06-07 18:49:50 -04:00
|
|
|
|
|
|
|
|
#include "Cluster/IPDisplayClusterClusterManager.h"
|
|
|
|
|
#include "Config/IPDisplayClusterConfigManager.h"
|
|
|
|
|
#include "Game/IPDisplayClusterGameManager.h"
|
|
|
|
|
#include "Render/IPDisplayClusterRenderManager.h"
|
|
|
|
|
|
2020-10-29 13:38:15 -04:00
|
|
|
class UDisplayClusterConfigurationData;
|
|
|
|
|
|
2018-06-07 18:49:50 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Display Cluster module implementation
|
|
|
|
|
*/
|
|
|
|
|
class FDisplayClusterModule :
|
|
|
|
|
public IPDisplayCluster
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
FDisplayClusterModule();
|
|
|
|
|
virtual ~FDisplayClusterModule();
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// IDisplayCluster
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
2018-07-11 14:51:47 -04:00
|
|
|
virtual bool IsModuleInitialized() const override
|
2021-11-18 14:37:34 -05:00
|
|
|
{
|
|
|
|
|
return bIsModuleInitialized;
|
|
|
|
|
}
|
2018-07-11 14:51:47 -04:00
|
|
|
|
|
|
|
|
virtual EDisplayClusterOperationMode GetOperationMode() const override
|
2021-11-18 14:37:34 -05:00
|
|
|
{
|
|
|
|
|
return CurrentOperationMode;
|
|
|
|
|
}
|
2018-07-11 14:51:47 -04:00
|
|
|
|
2018-06-07 18:49:50 -04:00
|
|
|
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; }
|
|
|
|
|
|
2021-11-18 14:37:34 -05:00
|
|
|
virtual IDisplayClusterCallbacks& GetCallbacks() override
|
|
|
|
|
{
|
|
|
|
|
return Callbacks;
|
|
|
|
|
}
|
|
|
|
|
|
2018-06-07 18:49:50 -04:00
|
|
|
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;
|
2021-04-29 19:32:06 -04:00
|
|
|
virtual bool StartSession(UDisplayClusterConfigurationData* InConfigData, const FString& NodeId) override;
|
2018-06-07 18:49:50 -04:00
|
|
|
virtual void EndSession() override;
|
2020-06-23 18:40:00 -04:00
|
|
|
virtual bool StartScene(UWorld* InWorld) override;
|
2018-06-07 18:49:50 -04:00
|
|
|
virtual void EndScene() override;
|
2019-10-23 15:19:37 -04:00
|
|
|
virtual void StartFrame(uint64 FrameNum) override;
|
2018-06-07 18:49:50 -04:00
|
|
|
virtual void PreTick(float DeltaSeconds) override;
|
2019-10-23 15:19:37 -04:00
|
|
|
virtual void Tick(float DeltaSeconds) override;
|
|
|
|
|
virtual void PostTick(float DeltaSeconds) override;
|
|
|
|
|
virtual void EndFrame(uint64 FrameNum) override;
|
2019-01-23 14:28:06 -05:00
|
|
|
|
2018-06-07 18:49:50 -04:00
|
|
|
private:
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// IModuleInterface
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
virtual void StartupModule() override;
|
|
|
|
|
virtual void ShutdownModule() override;
|
|
|
|
|
|
|
|
|
|
private:
|
2018-07-11 14:51:47 -04:00
|
|
|
// 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;
|
|
|
|
|
|
2018-06-07 18:49:50 -04:00
|
|
|
// DisplayCluster subsystems
|
|
|
|
|
IPDisplayClusterClusterManager* MgrCluster = nullptr;
|
|
|
|
|
IPDisplayClusterRenderManager* MgrRender = nullptr;
|
|
|
|
|
IPDisplayClusterConfigManager* MgrConfig = nullptr;
|
|
|
|
|
IPDisplayClusterGameManager* MgrGame = nullptr;
|
|
|
|
|
|
|
|
|
|
// Array of available managers
|
|
|
|
|
TArray<IPDisplayClusterManager*> Managers;
|
|
|
|
|
|
2021-11-18 14:37:34 -05:00
|
|
|
FDisplayClusterCallbacks Callbacks;
|
|
|
|
|
|
2018-06-07 18:49:50 -04:00
|
|
|
// Runtime
|
|
|
|
|
EDisplayClusterOperationMode CurrentOperationMode = EDisplayClusterOperationMode::Disabled;
|
|
|
|
|
};
|