EM_Task/UnrealEd/Classes/Editor/EditorPerProjectUserSettings.h

193 lines
9.3 KiB
C
Raw Permalink Normal View History

2026-02-13 16:18:33 +08:00
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "UObject/Object.h"
#include "Engine/EngineTypes.h"
#include "EditorPerProjectUserSettings.generated.h"
UCLASS(minimalapi, autoexpandcategories = (ViewportControls, ViewportLookAndFeel, LevelEditing, SourceControl, Content, Startup), hidecategories = (Object, Options, Grid, RotationGrid), config = EditorPerProjectUserSettings)
class UEditorPerProjectUserSettings: public UObject
{
GENERATED_UCLASS_BODY()
// =====================================================================
// The following options are exposed in the Preferences Editor
/** If enabled, any newly opened UI menus, menu bars, and toolbars will show the developer hooks that would accept extensions */
UPROPERTY(EditAnywhere, config, Category = DeveloperTools, meta = (DisplayName = "Display UI Extension Points"))
uint32 bDisplayUIExtensionPoints : 1;
/** If enabled, tooltips linked to documentation will show the developer the link bound to that UI item */
UPROPERTY(EditAnywhere, config, Category = DeveloperTools)
uint32 bDisplayDocumentationLink : 1;
/** If enabled, tooltips on SGraphPaletteItems will show the associated action's string id */
UPROPERTY(/*EditAnywhere - deprecated (moved into UBlueprintEditorSettings), */ config /*, Category=DeveloperTools*/)
uint32 bDisplayActionListItemRefIds : 1;
/** If enabled, behavior tree debugger will collect its data even when all behavior tree editor windows are closed */
UPROPERTY(EditAnywhere, config, Category = AI)
uint32 bAlwaysGatherBehaviorTreeDebuggerData : 1;
/** If enabled, blackboard keys displayed in blackboard editor and key selector will be sorted in alphabetical order . */
UPROPERTY(EditAnywhere, config, Category = AI)
uint32 bDisplayBlackboardKeysInAlphabeticalOrder : 1;
/** When enabled, Engine Version Number is displayed in the ProjectBadge */
UPROPERTY(EditAnywhere, config, Category = DeveloperTools, meta = (DisplayName = "Display Engine Version Number in Project Badge", ConfigRestartRequired = true))
bool bDisplayEngineVersionInBadge;
/** When enabled, use SimplygonSwarm Module / server to create proxies */
UPROPERTY(EditAnywhere, config, Category = SimplygonSwarm, meta = (DisplayName = "Use Simplygon distributed proxy server"))
bool bUseSimplygonSwarm;
/** Server IP for the distributed Simplygon server */
UPROPERTY(EditAnywhere, config, Category = SimplygonSwarm, meta = (DisplayName = "Simplygon distributed proxy server IP", editcondition = "bUseSimplygonSwarm"))
FString SimplygonServerIP;
/** Enable swarm debugging features. Temp ssf files are not removed. Detailed message printing */
UPROPERTY(EditAnywhere, config, Category = SimplygonSwarm, meta = (DisplayName = "Enable Swarm Debugging ", editcondition = "bUseSimplygonSwarm"))
bool bEnableSwarmDebugging;
/** Time between JSON net requests for Simplygon Swarm */
UPROPERTY(EditAnywhere, config, Category = SimplygonSwarm, meta = (DisplayName = "Time in (MS). Delay between json request (Default 5000ms)", editcondition = "bUseSimplygonSwarm", ClampMin = "5000", ClampMax = "30000", UIMin = "5000", UIMax = "30000"))
uint32 SimplygonSwarmDelay;
/** Number of concurrent swarm jobs to execute. This is independent of the main job queue. */
UPROPERTY(EditAnywhere, config, Category = SimplygonSwarm, meta = (DisplayName = "Number of concurrent jobs to submit on simplygon grid server", editcondition = "bUseSimplygonSwarm", ClampMin = "4", ClampMax = "512", UIMin = "4", UIMax = "512"))
uint32 SwarmNumOfConcurrentJobs;
UPROPERTY(EditAnywhere, config, Category = SimplygonSwarm, meta = (DisplayName = "Max upload size of simplygon swarm zip (MB). File larger than max size will be split into chunks.", editcondition = "bUseSimplygonSwarm", ClampMin = "10", ClampMax = "2000", UIMin = "10", UIMax = "2000"))
uint32 SwarmMaxUploadChunkSizeInMB;
/** Folder in which Simplygon Swarm will store intermediate texture and mesh data that is uploaded to the Swarm */
UPROPERTY(EditAnywhere, config, Category = SimplygonSwarm, meta = (DisplayName = "Simplygon Swarm Intermediate Folder", ConfigRestartRequired = true, editcondition = "bUseSimplygonSwarm"))
FString SwarmIntermediateFolder;
/** If enabled, any newly added classes will be automatically compiled and trigger a hot-reload of the module they were added to */
UPROPERTY(EditAnywhere, config, Category = HotReload, meta = (DisplayName = "Automatically Compile Newly Added C++ Classes"))
uint32 bAutomaticallyHotReloadNewClasses : 1;
/** If enabled, the compile message log window will open if there is a compiler error on Hot Reload */
UPROPERTY(EditAnywhere, config, Category = HotReload)
uint32 bShowCompilerLogOnCompileError : 1;
/** If enabled, the fbx parser will keep the fbx namespaces, otherwise the namespace will be append to fbx node. */
UPROPERTY(EditAnywhere, config, Category = Import)
uint32 bKeepFbxNamespace : 1;
/** If enabled, the fbx option dialog will show when user re-import a fbx */
UPROPERTY(EditAnywhere, config, Category = Import)
uint32 bShowImportDialogAtReimport : 1;
/** Specify a project data source folder to store relative source file path to ease the re-import process*/
UPROPERTY(EditAnywhere, config, Category = Import)
FDirectoryPath DataSourceFolder;
/** If enabled, export level with attachment hierarchy set */
UPROPERTY(EditAnywhere, config, Category = Export)
uint32 bKeepAttachHierarchy : 1;
/** If enabled, will compare an animation's sequence length and curves against the old data and inform the user if something changed */
UPROPERTY(EditAnywhere, config, Category = Import)
uint32 bAnimationReimportWarnings : 1;
/** Select to make Distributions use the curves, not the baked lookup tables. */
UPROPERTY(config)
uint32 bUseCurvesForDistributions : 1; //(GDistributionType == 0)
/** Controls the minimum value at which the property matrix editor will display a loading bar when pasting values */
UPROPERTY(config)
int32 PropertyMatrix_NumberOfPasteOperationsBeforeWarning;
UPROPERTY(config)
bool bSCSEditorShowGrid;
UPROPERTY(config)
bool bSCSEditorShowFloor;
/** If enabled, the Editor will attempt to get the users attention whenever a UAT task (such as cooking or packaging) is completed */
UPROPERTY(EditAnywhere, config, Category = UnrealAutomationTool)
bool bGetAttentionOnUATCompletion;
/** How fast the SCS viewport camera moves */
UPROPERTY(config, meta = (UIMin = "1", UIMax = "8", ClampMin = "1", ClampMax = "8"))
int32 SCSViewportCameraSpeed;
// Color curve:
// Release->Attack happens instantly
// Attack holds for AttackHoldPeriod, then
// Decays from Attack to Sustain for DecayPeriod with DecayExponent, then
// Sustain holds for SustainHoldPeriod, then
// Releases from Sustain to Release for ReleasePeriod with ReleaseExponent
//
// The effective time at which an event occurs is it's most recent exec time plus a bonus based on the position in the execution trace
// =====================================================================
// The following options are NOT exposed in the preferences Editor
// (usually because there is a different way to set them interactively!)
/** Controls whether packages which are checked-out are automatically fully loaded at startup */
UPROPERTY(config)
uint32 bAutoloadCheckedOutPackages : 1;
/** If this is true, the user will not be asked to fully load a package before saving or before creating a new object */
UPROPERTY(config)
uint32 bSuppressFullyLoadPrompt : 1;
/** True if user should be allowed to select translucent objects in perspective viewports */
UPROPERTY(config)
uint32 bAllowSelectTranslucent : 1;
UPROPERTY()
class UBlueprintPaletteFavorites* BlueprintFavorites;
public:
// Per project user settings for which asset viewer profile should be used
UPROPERTY()
int32 AssetViewerProfileIndex;
UPROPERTY(config)
FString AssetViewerProfileName;
UPROPERTY(config)
int32 MaterialQualityLevel;
/** The feature level we should use when loading or creating a new world */
UPROPERTY(config)
int32 PreviewFeatureLevel;
/** The platform name to preview, or NAME_None if there is no preview platform */
UPROPERTY(config)
FName PreviewPlatformName;
/** The shader platform to preview, or NAME_None if there is no preview platform */
UPROPERTY(config)
FName PreviewShaderFormatName;
/** Is feature level preview currently active */
UPROPERTY(config)
bool bPreviewFeatureLevelActive;
UPROPERTY(config)
FName PreviewDeviceProfileName;
public:
/** Delegate for when a user setting has changed */
DECLARE_EVENT_OneParam(UEditorPerProjectUserSettings, FUserSettingChangedEvent, FName /*PropertyName*/);
FUserSettingChangedEvent& OnUserSettingChanged() { return UserSettingChangedEvent; }
//~ Begin UObject Interface
#if WITH_EDITOR
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
#endif
virtual void PostInitProperties() override;
//~ End UObject Interface
private:
FUserSettingChangedEvent UserSettingChangedEvent;
};