Files
UnrealEngine/Engine/Plugins/Runtime/nDisplay/Source/DisplayClusterProjection/Private/Policy/DisplayClusterProjectionPolicyBase.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

71 lines
2.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Render/Projection/IDisplayClusterProjectionPolicy.h"
#include "Misc/DisplayClusterObjectRef.h"
#include "DisplayClusterProjectionStrings.h"
class USceneComponent;
/**
* Base projection policy
*/
class FDisplayClusterProjectionPolicyBase
: public IDisplayClusterProjectionPolicy
{
public:
FDisplayClusterProjectionPolicyBase(const FString& ProjectionPolicyId, const FDisplayClusterConfigurationProjection* InConfigurationProjectionPolicy);
public:
//~BEGIN IDisplayClusterProjectionPolicy
virtual const FString& GetId() const override
{
return PolicyInstanceId;
}
virtual USceneComponent* const GetOriginComponent() const override
{
return PolicySceneOriginComponentRef.GetOrFindSceneComponent();
}
virtual USceneComponent* const GetPreviewMeshOriginComponent(IDisplayClusterViewport* InViewport) const override
{
return PolicyPreviewMeshOriginComponentRef.GetOrFindSceneComponent();
}
virtual const TMap<FString, FString>& GetParameters() const override
{
return Parameters;
}
virtual bool IsConfigurationChanged(const FDisplayClusterConfigurationProjection* InConfigurationProjectionPolicy) const override;
//~~END IDisplayClusterProjectionPolicy
static bool IsEditorOperationMode(IDisplayClusterViewport* InViewport);
static bool IsEditorOperationMode_RenderThread(const IDisplayClusterViewportProxy* InViewportProxy);
protected:
void InitializeOriginComponent(IDisplayClusterViewport* InViewport, const FString& OriginCopmId);
void ReleaseOriginComponent();
private:
// The unique name of this projection policy.
const FString PolicyInstanceId;
// Origin component name.
FString PolicyOriginCompId;
// Projection policy parameters. Used for initialization.
TMap<FString, FString> Parameters;
// Origin component in DCRA from the scene
FDisplayClusterSceneComponentRef PolicySceneOriginComponentRef;
// Origin component in the parent DCRA that is used to render the preview.
FDisplayClusterSceneComponentRef PolicyPreviewMeshOriginComponentRef;
};