// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "EngineGlobals.h" #include "IDisplayCluster.h" //#include "../Private/Cluster/IPDisplayClusterClusterManager.h" //#include "../Private/Config/IPDisplayClusterConfigManager.h" //#include "../Private/Game/IPDisplayClusterGameManager.h" //#include "../Private/Input/IPDisplayClusterInputManager.h" //#include "../Private/Render/IPDisplayClusterRenderManager.h" #include "CvltClusterActor.generated.h" UCLASS() class CAVELATENCYSYSTEMC_API ACvltClusterActor : public AActor, public IDisplayCluster { GENERATED_BODY() public: // Called every frame virtual void Tick(float DeltaTime) override; virtual void BeginPlay() override; public: /** * Checks if the module has been initialized. * * @return Is initialized */ virtual bool IsModuleInitialized() const override { return false; } /** * Returns current operation mode. * * @return Display Cluster operation mode */ virtual EDisplayClusterOperationMode GetOperationMode() const override { return CurrentOperationMode; } virtual IDisplayClusterRenderManager* GetRenderMgr() const override { return nullptr; } virtual IDisplayClusterClusterManager* GetClusterMgr() const override { return nullptr; } virtual IDisplayClusterInputManager* GetInputMgr() const override { return nullptr; } virtual IDisplayClusterConfigManager* GetConfigMgr() const override { return nullptr; } virtual IDisplayClusterGameManager* GetGameMgr() const override { return nullptr; } DECLARE_DERIVED_EVENT(ACvltClusterActor, IDisplayCluster::FDisplayClusterStartSessionEvent, FDisplayClusterStartSessionEvent); virtual FDisplayClusterStartSessionEvent& OnDisplayClusterStartSession() override { return CvltStartSession; } DECLARE_DERIVED_EVENT(ACvltClusterActor, IDisplayCluster::FDisplayClusterEndSessionEvent, FDisplayClusterEndSessionEvent); virtual FDisplayClusterEndSessionEvent& OnDisplayClusterEndSession() override { return CvltEndSession; } DECLARE_DERIVED_EVENT(ACvltClusterActor, IDisplayCluster::FDisplayClusterStartFrameEvent, FDisplayClusterStartFrameEvent); virtual FDisplayClusterStartFrameEvent& OnDisplayClusterStartFrame() override { return CvltStartFrame; } DECLARE_DERIVED_EVENT(ACvltClusterActor, IDisplayCluster::FDisplayClusterEndFrameEvent, FDisplayClusterEndFrameEvent); virtual FDisplayClusterEndFrameEvent& OnDisplayClusterEndFrame() override { return CvltEndFrame; } DECLARE_DERIVED_EVENT(ACvltClusterActor, IDisplayCluster::FDisplayClusterPreTickEvent, FDisplayClusterPreTickEvent); virtual FDisplayClusterPreTickEvent& OnDisplayClusterPreTick() override { return CvltPreTick; } DECLARE_DERIVED_EVENT(ACvltClusterActor, IDisplayCluster::FDisplayClusterTickEvent, FDisplayClusterTickEvent); virtual FDisplayClusterTickEvent& OnDisplayClusterTick() override { return CvltTick; } DECLARE_DERIVED_EVENT(ACvltClusterActor, IDisplayCluster::FDisplayClusterPostTickEvent, FDisplayClusterPostTickEvent); virtual FDisplayClusterPostTickEvent& OnDisplayClusterPostTick() override { return CvltPostTick; } private: FDisplayClusterStartFrameEvent CvltStartFrame; FDisplayClusterEndFrameEvent CvltEndFrame; FDisplayClusterStartSessionEvent CvltStartSession; FDisplayClusterEndSessionEvent CvltEndSession; FDisplayClusterPreTickEvent CvltPreTick; FDisplayClusterTickEvent CvltTick; FDisplayClusterPostTickEvent CvltPostTick; 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; // Runtime EDisplayClusterOperationMode CurrentOperationMode = EDisplayClusterOperationMode::Disabled; };