Files
UnrealEngine/Engine/Plugins/PCG/Source/PCGEditor/Public/PCGEditorSettings.h
2025-05-18 13:04:45 +08:00

288 lines
13 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Engine/DeveloperSettings.h"
#include "Templates/SubclassOf.h"
#include "PCGEditorSettings.generated.h"
class UPCGSettings;
class UPCGBuilderSettings;
struct FEdGraphPinType;
UENUM(BlueprintType)
enum class EPCGEditorDoubleClickAction : uint8
{
DoNothing,
ToggleInspectNode UMETA(DisplayName = "Toggle Inspection on Node"),
ToggleDebugNode UMETA(DisplayName = "Toggle Debug on Node"),
JumpToSourceFile UMETA(DisplayName = "View Source File (C++)")
};
UCLASS(config=Editor, meta=(DisplayName="PCG"))
class PCGEDITOR_API UPCGEditorProjectSettings : public UDeveloperSettings
{
GENERATED_BODY()
public:
UPCGEditorProjectSettings(const FObjectInitializer& ObjectInitializer);
/** Default Builder Settings to use when running the PCGWorldPartitionBuilder */
UPROPERTY(EditAnywhere, config, Category = Builder)
TSoftObjectPtr<UPCGBuilderSettings> DefaultBuilderSetting;
/** [EXPERIMENTAL] Whether to automatically refresh components that use GPU Static Mesh Spawners when materials are modified. Temporary workaround for
* issues where instances can be lost.
* Note: This setting is subject to change/removal without deprecation.
*/
UPROPERTY(EditAnywhere, Config, Category = Workflow)
bool bAutoRefreshGPUStaticMeshSpawners = true;
};
UCLASS(config=EditorPerProjectUserSettings)
class PCGEDITOR_API UPCGEditorSettings : public UObject
{
GENERATED_BODY()
public:
UPCGEditorSettings(const FObjectInitializer& ObjectInitializer);
FLinearColor GetColor(UPCGSettings* InSettings) const;
FLinearColor GetPinColor(const FEdGraphPinType& InPinType) const;
/** Default node color */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor DefaultNodeColor;
/** Instanced node body tint color */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor InstancedNodeBodyTintColor;
/** Color used for input & output nodes */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor InputOutputNodeColor;
/** Color used for Difference, Intersection, Projection, Union */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor SetOperationNodeColor;
/** Color used for density remap */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor DensityOperationNodeColor;
/** Color used for blueprints */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor BlueprintNodeColor;
/** Color used for metadata operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor MetadataNodeColor;
/** Color used for filter-like operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor FilterNodeColor;
/** Color used for sampler operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor SamplerNodeColor;
/** Color used for artifact-generating operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor SpawnerNodeColor;
/** Color used for subgraph-like operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor SubgraphNodeColor;
/** Color used for Attribute Set operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel, DisplayName = "Attribute Set Node Color"))
FLinearColor ParamDataNodeColor;
/** Color used for debug operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor DebugNodeColor;
/** Color used for control flow operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor ControlFlowNodeColor;
/** Color used for point operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor PointOpsNodeColor;
/** Color used for hierarchical generation operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor HierarchicalGenerationNodeColor;
/** Color used for graph parameters operations */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor GraphParametersNodeColor;
/** Color used for reroute nodes */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor RerouteNodeColor;
/** Color used for dynamic mesh nodes */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor DynamicMeshNodeColor;
/** Color used for resource nodes */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor ResourceNodeColor;
/** Default pin color */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor DefaultPinColor;
/** Color used for spatial data pins */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor SpatialDataPinColor;
/** Color used for concrete/simple spatial data pins */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor ConcreteDataPinColor;
/** Color used for data pins of type Point */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor PointDataPinColor;
/** Color used for data pins of type Spline */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor PolyLineDataPinColor;
/** Color used for data pins of type Surface */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor SurfaceDataPinColor;
/** Color used for data pins of type Landscape */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor LandscapeDataPinColor;
/** Color used for data pins of type Base Texture */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor BaseTextureDataPinColor;
/** Color used for data pins of type Texture */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor TextureDataPinColor;
/** Color used for data pins of type Render Target */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor RenderTargetDataPinColor;
/** Color used for data pins of type Virtual Texture */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor VirtualTextureDataPinColor;
/** Color used for data pins of type Volume */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor VolumeDataPinColor;
/** Color used for data pins of type Primitive */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor PrimitiveDataPinColor;
/** Color used for data pins of type Attribute Set */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel, DisplayName = "Attribute Set Pin Color"))
FLinearColor ParamDataPinColor;
/** Color used for data pins of type Dynamic Mesh */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor DynamicMeshPinColor;
/** Color used for data pins of type Static Mesh Resource */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor StaticMeshResourcePinColor;
/** Color used for other/unknown data types */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
FLinearColor UnknownDataPinColor;
/** User-driven color overrides */
UPROPERTY(EditAnywhere, config, Category = Node, meta = (HideAlphaChannel))
TMap<TSubclassOf<UPCGSettings>, FLinearColor> OverrideNodeColorByClass;
/** Default wire thickness */
UPROPERTY(EditAnywhere, config, Category = Wire, meta = (ClampMin="1", ClampMap="9"))
float DefaultWireThickness = 1.5f;
/** Hover edge size emphasis */
UPROPERTY(EditAnywhere, config, Category = Wire, meta = (ClampMin="1", ClampMax="5"))
float HoverEdgeEmphasis = 1.5f;
/** Debug mode edge emphasis on multi-data */
UPROPERTY(EditAnywhere, config, Category = Wire, meta = (ClampMin="1", ClampMax="5"))
float MultiDataEdgeDebugEmphasis = 2.5f;
/** Debug mode edge desaturation with empty data */
UPROPERTY(EditAnywhere, config, Category = Wire, meta = (ClampMin="0", ClampMax="1"))
float EmptyEdgeDebugDesaturateFactor = 0.5f;
/** Specify an action to take upon double-clicking a native PCG node. */
UPROPERTY(EditAnywhere, Config, Category = "Workflow")
EPCGEditorDoubleClickAction NodeDoubleClickAction = EPCGEditorDoubleClickAction::ToggleInspectNode;
/** Verify renaming graph parameters via their local getter nodes with a pop-up confirmation window. */
UPROPERTY(EditAnywhere, config, Category = Workflow)
bool bConfirmLocalGraphParameterNameChanges = true;
/** Allow selecting PCG partition actors in the viewport/outliner. */
UPROPERTY(EditAnywhere, config, Category = "Workflow")
bool bCanSelectPartitionActors = true;
/** Specify if we want to disable CPU Throttling when a PCG Graph is executing, this will improve execution time when app is out of focus/minimized */
UPROPERTY(EditAnywhere, config, Category = "Editor Performance", meta = (DisplayName = "Disable CPU throttling during graph execution"))
bool bDisableCPUThrottlingDuringGraphExecution = false;
/** Controls whether the "Pause PCG" button will be display in the editor menu */
UPROPERTY(EditAnywhere, config, Category = "Editor Performance", meta = (DisplayName = "Show PCG pause button in the editor (requires restart)"))
bool bShowPauseButton = false;
/** Controls whether PCG tasks will be cancelled when unpausing PCG, which might result in dirty/stale content, but will not require significant time. */
UPROPERTY(EditAnywhere, config, Category = "Editor Performance", meta = (DisplayName = "Unpausing cancels all PCG tasks"))
bool bUnpauseCancelsAll = false;
/** Controls whether the alternate PCG pause button is shown instead of the default PCG icon. */
UPROPERTY(EditAnywhere, config, Category = "Editor Performance", meta = (DisplayName = "Use alternate pause button icon", EditCondition = "bShowPauseButton", EditConditionHides))
bool bUseAlternatePauseButton = false;
/** Overrides the label of the pause button while PCG is not currently being paused. The default is empty or None, which will use the default label then. */
UPROPERTY(EditAnywhere, config, Category = "Editor Performance", meta = (DisplayName = "Overrides default name for the 'currently paused' button", EditCondition = "bShowPauseButton", EditConditionHides))
FName OverridePausedButtonLabel = NAME_None;
/** Overrides the label of the pause button while PCG is currently paused. The default is empty or None, which will use the default label then. */
UPROPERTY(EditAnywhere, config, Category = "Editor Performance", meta = (DisplayName = "Overrides default name for the 'not currently paused' button", EditCondition = "bShowPauseButton", EditConditionHides))
FName OverrideNotPausedButtonLabel = NAME_None;
/** Overrides the tooltip on the pause button. The default is empty, which will use the default tooltip then. */
UPROPERTY(EditAnywhere, config, Category = "Editor Performance", meta = (MultiLine = true, DisplayName = "Overrides default tooltip on the pause button", EditCondition = "bShowPauseButton", EditConditionHides))
FString OverridePausedButtonTooltip = FString();
/** Target number of points when trying to debug volume data or landscape data, to avoid exploding the number of points if the volume/landscape is big, and to have a good representation if the volume/landscape is small. */
UPROPERTY(EditAnywhere, config, Category = "Editor Performance")
int32 TargetNumPointsForDebug = 64000;
/** Controls whether the template picker dialog will be shown when creating a new PCG graph, both in the contextual menu and in the PCG graph pickers. */
UPROPERTY(EditAnywhere, config, Category = "Content Browser")
bool bShowTemplatePickerOnNewGraph = true;
/** Display node 'General' actions on the right click context menu. */
UPROPERTY(EditAnywhere, config, Category = "Graph UI")
bool bShowNodeGeneralActionsRightClickContextMenu = true;
/** Display node 'Organizational' actions on the right click context menu. */
UPROPERTY(EditAnywhere, config, Category = "Graph UI")
bool bShowNodeOrganizationalActionsRightClickContextMenu = true;
/** Display node 'Determinism' actions on the right click context menu. */
UPROPERTY(EditAnywhere, config, Category = "Graph UI")
bool bShowNodeDeterminismActionsRightClickContext = true;
// Begin deprecated properties
UE_DEPRECATED(5.6, "bEnableNavigateToNativeNodes has been replaced by NodeDoubleClickAction.")
UPROPERTY()
bool bEnableNavigateToNativeNodes = true;
};