// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "UObject/ObjectMacros.h" #include "Engine/DeveloperSettings.h" #include "Math/UnitConversion.h" #include "Components/ChildActorComponent.h" #include "EditorProjectSettings.generated.h" /** UENUM to define the specific set of allowable unit types */ UENUM() enum class EUnitDisplay : uint8 { None, Metric, Imperial, Invalid }; /** UENUM to define the specific set of allowable default units */ UENUM() enum class EDefaultLocationUnit : uint8 { Micrometers, Millimeters, Centimeters, Meters, Kilometers, Inches, Feet, Yards, Miles, Invalid }; /** * Editor project appearance settings. Stored in default config, per-project */ UCLASS(config = Editor, defaultconfig, meta = (DisplayName = "Appearance")) class UNREALED_API UEditorProjectAppearanceSettings: public UDeveloperSettings { public: GENERATED_BODY() UEditorProjectAppearanceSettings(const FObjectInitializer&); protected: /** Called when a property on this object is changed */ virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override; virtual void PostInitProperties() override; public: UPROPERTY(EditAnywhere, config, Category = Units, meta = (DisplayName = "Display Units on Applicable Properties", Tooltip = "Whether to display units on editor properties where the property has units set.")) bool bDisplayUnits; UPROPERTY(EditAnywhere, config, Category = Units, meta = (EditCondition = "bDisplayUnits", DisplayName = "Display Units on Component Transforms", Tooltip = "Whether to display units on component transform properties")) bool bDisplayUnitsOnComponentTransforms; UPROPERTY(EditAnywhere, config, Category = Units, AdvancedDisplay, meta = (DisplayName = "Distance/Length", Tooltip = "Choose a set of units in which to display distance/length values.")) TArray DistanceUnits; UPROPERTY(EditAnywhere, config, Category = Units, AdvancedDisplay, meta = (DisplayName = "Mass", Tooltip = "Choose a set of units in which to display masses.")) TArray MassUnits; UPROPERTY(EditAnywhere, config, Category = Units, AdvancedDisplay, meta = (DisplayName = "Time", Tooltip = "Choose the units in which to display time.")) TArray TimeUnits; UPROPERTY(EditAnywhere, config, Category = Units, AdvancedDisplay, meta = (DisplayName = "Angles", Tooltip = "Choose the units in which to display angles.", ValidEnumValues = "Degrees, Radians")) EUnit AngleUnits; UPROPERTY(EditAnywhere, config, Category = Units, AdvancedDisplay, meta = (DisplayName = "Speed/Velocity", Tooltip = "Choose the units in which to display speeds and velocities.", ValidEnumValues = "MetersPerSecond, KilometersPerHour, MilesPerHour")) EUnit SpeedUnits; UPROPERTY(EditAnywhere, config, Category = Units, AdvancedDisplay, meta = (DisplayName = "Temperature", Tooltip = "Choose the units in which to display temperatures.", ValidEnumValues = "Celsius, Farenheit, Kelvin")) EUnit TemperatureUnits; UPROPERTY(EditAnywhere, config, Category = Units, AdvancedDisplay, meta = (DisplayName = "Force", Tooltip = "Choose the units in which to display forces.", ValidEnumValues = "Newtons, PoundsForce, KilogramsForce")) EUnit ForceUnits; public: /** Deprecated properties that didn't live very long */ UPROPERTY(config) EUnitDisplay UnitDisplay_DEPRECATED; UPROPERTY(config) EDefaultLocationUnit DefaultInputUnits_DEPRECATED; }; /** * 2D layer settings */ USTRUCT() struct UNREALED_API FMode2DLayer { GENERATED_USTRUCT_BODY() FMode2DLayer() : Name(TEXT("Default")), Depth(0) {} FMode2DLayer(FString InName, float InDepth) : Name(InName), Depth(InDepth) {} /** Whether snapping to surfaces in the world is enabled */ UPROPERTY(EditAnywhere, config, Category = Layer) FString Name; /** The amount of depth to apply when snapping to surfaces */ UPROPERTY(EditAnywhere, config, Category = Layer) float Depth; }; UENUM() enum class ELevelEditor2DAxis : uint8 { X, Y, Z }; /** * Configure settings for the 2D Level Editor */ UCLASS(config = Editor, meta = (DisplayName = "2D"), defaultconfig) class UNREALED_API ULevelEditor2DSettings: public UDeveloperSettings { GENERATED_UCLASS_BODY() public: /** If enabled will allow 2D mode */ UPROPERTY(EditAnywhere, config, Category = General, meta = (DisplayName = "Enable 2D combined translate + rotate widget")) bool bEnable2DWidget; /** If enabled will allow 2D mode */ UPROPERTY(EditAnywhere, config, Category = LayerSnapping) bool bEnableSnapLayers; /** Snap axis */ UPROPERTY(EditAnywhere, config, Category = LayerSnapping, meta = (EditCondition = bEnableSnapLayers)) ELevelEditor2DAxis SnapAxis; /** Snap layers that are displayed in the viewport toolbar */ UPROPERTY(EditAnywhere, config, Category = LayerSnapping, meta = (EditCondition = bEnableSnapLayers)) TArray SnapLayers; public: // UObject interface virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override; // End of UObject interface }; UCLASS(config = Editor, meta = (DisplayName = "Blueprint Project Settings"), defaultconfig) class UNREALED_API UBlueprintEditorProjectSettings: public UDeveloperSettings { GENERATED_UCLASS_BODY() public: /** * Flag to disable faster compiles for individual blueprints if they have no function signature * changes. This flag is deprecated! In 4.21 there will be no way to force all dependencies to * compile when no changes are detected. Report any issues immediately. */ UPROPERTY(EditAnywhere, config, Category = Blueprints, DisplayName = "Force All Dependencies To Recompile (DEPRECATED)") uint8 bForceAllDependenciesToRecompile : 1; /** If enabled, the editor will load packages to look for soft references to actors when deleting/renaming them. This can be slow in large projects so disable this to improve performance but increase the chance of breaking blueprints/sequences that use soft actor references */ UPROPERTY(EditAnywhere, config, Category = Actors) uint8 bValidateUnloadedSoftActorReferences : 1; /** * Enable the option to expand child actor components within component tree views (experimental). */ UPROPERTY(EditAnywhere, config, Category = Experimental) uint8 bEnableChildActorExpansionInTreeView : 1; /** * List of compiler messages that have been suppressed outside of full, interactive editor sessions for * the current project - useful for silencing warnings that were added to the engine after * project inception and are going to be addressed as they are found by content authors */ UPROPERTY(EditAnywhere, config, Category = Blueprints, DisplayName = "Compiler Messages Disabled Except in Editor") TArray DisabledCompilerMessagesExceptEditor; /** * List of compiler messages that have been suppressed completely - message suppression is only * advisable when using blueprints that you cannot update and are raising innocuous warnings. * If useless messages are being raised prefer to contact support rather than disabling messages */ UPROPERTY(EditAnywhere, config, Category = Blueprints, DisplayName = "Compiler Messages Disabled Entirely") TArray DisabledCompilerMessages; // The list of namespaces to always expose in any Blueprint (for all users of the game/project) UPROPERTY(EditAnywhere, config, Category = Experimental) TArray NamespacesToAlwaysInclude; /** * Default view mode to use for child actor components in a Blueprint actor's component tree hierarchy (experimental). */ UPROPERTY(EditAnywhere, config, Category = Experimental, meta = (EditCondition = "bEnableChildActorExpansionInTreeView")) EChildActorComponentTreeViewVisualizationMode DefaultChildActorTreeViewMode; // UObject interface virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override; // End of UObject interface }; UCLASS(config = Editor, meta = (DisplayName = "DDC"), defaultconfig) class UNREALED_API UDDCProjectSettings: public UDeveloperSettings { GENERATED_BODY() public: UDDCProjectSettings() {} /** * */ UPROPERTY(EditAnywhere, config, Category = Blueprints) bool RecommendEveryoneSetupAGlobalLocalDDCPath; /** * */ UPROPERTY(EditAnywhere, config, Category = Blueprints) bool RecommendEveryoneSetupAGlobalS3DDCPath; };