Files
UnrealEngineUWP/Engine/Source/Editor/UnrealEd/Private/PreferenceStubs.cpp
nick brett 78a3520cbc [UE][FEATURE] PhAT - Move Simulation Floor Collisions option to Editor Options so that it persists across editor instances.
#rb Thomas.Sarkanen
#preflight 627cce5480307e522bc78107

#ROBOMERGE-AUTHOR: nick.brett
#ROBOMERGE-SOURCE: CL 20162683 via CL 20162686 via CL 20162689
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20163248 by nick brett in ue5-main branch]
2022-05-12 08:09:12 -04:00

287 lines
8.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "CoreMinimal.h"
#include "Preferences/CascadeOptions.h"
#include "Preferences/CurveEdOptions.h"
#include "Preferences/MaterialEditorOptions.h"
#include "Preferences/PersonaOptions.h"
#include "Preferences/AnimationBlueprintEditorOptions.h"
#include "Preferences/PhysicsAssetEditorOptions.h"
#include "Preferences/MaterialStatsOptions.h"
#include "FrameNumberDisplayFormat.h"
// @todo find a better place for all of this, preferably in the appropriate modules
// though this would require the classes to be relocated as well
//
// UCascadeOptions
//
UCascadeOptions::UCascadeOptions(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
///////////////////////////////////////////////////////////////////////////////////////////////////
////////////////// UPhysicsAssetEditorOptions /////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
UPhysicsAssetEditorOptions::UPhysicsAssetEditorOptions(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
PhysicsBlend = 1.0f;
bUpdateJointsFromAnimation = false;
MaxFPS = -1;
// These should duplicate defaults from UPhysicsHandleComponent
HandleLinearDamping = 200.0f;
HandleLinearStiffness = 750.0f;
HandleAngularDamping = 500.0f;
HandleAngularStiffness = 1500.0f;
InterpolationSpeed = 50.f;
bShowConstraintsAsPoints = false;
bSimulationFloorCollisionEnabled = true;
ConstraintDrawSize = 1.0f;
// view options
MeshViewMode = EPhysicsAssetEditorMeshViewMode::Solid;
CollisionViewMode = EPhysicsAssetEditorCollisionViewMode::Solid;
ConstraintViewMode = EPhysicsAssetEditorConstraintViewMode::AllLimits;
SimulationMeshViewMode = EPhysicsAssetEditorMeshViewMode::Solid;
SimulationCollisionViewMode = EPhysicsAssetEditorCollisionViewMode::Solid;
SimulationConstraintViewMode = EPhysicsAssetEditorConstraintViewMode::None;
CollisionOpacity = 0.3f;
bSolidRenderingForSelectedOnly = false;
bHideSimulatedBodies = false;
bHideKinematicBodies = false;
bResetClothWhenSimulating = false;
}
UMaterialEditorOptions::UMaterialEditorOptions(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
UMaterialStatsOptions::UMaterialStatsOptions(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
uint32 CurrentlyUsedSP = static_cast<int32>(GMaxRHIShaderPlatform);
if (CurrentlyUsedSP < UE_ARRAY_COUNT(bPlatformUsed))
{
bPlatformUsed[CurrentlyUsedSP] = 1;
}
bMaterialQualityUsed[EMaterialQualityLevel::High] = 1;
}
UAnimationBlueprintEditorOptions::UAnimationBlueprintEditorOptions(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
UCurveEdOptions::UCurveEdOptions(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
void FViewportConfigOptions::SetToDefault()
{
ViewModeIndex = VMI_Lit;
ViewFOV = 53.43f;
CameraSpeedSetting = 4;
CameraSpeedScalar = 1.0f;
CameraFollowMode = EAnimationViewportCameraFollowMode::None;
CameraFollowBoneName = NAME_None;
}
void FAssetEditorOptions::SetViewportConfigsToDefault()
{
for (FViewportConfigOptions& ViewportConfig : ViewportConfigs)
{
ViewportConfig.SetToDefault();
}
}
UPersonaOptions::UPersonaOptions(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
, DefaultLocalAxesSelection(2)
, DefaultBoneDrawSelection(1)
, bAllowPreviewMeshCollectionsToSelectFromDifferentSkeletons(true)
{
AssetEditorOptions.AddUnique(FAssetEditorOptions(TEXT("SkeletonEditor")));
AssetEditorOptions.AddUnique(FAssetEditorOptions(TEXT("SkeletalMeshEditor")));
AssetEditorOptions.AddUnique(FAssetEditorOptions(TEXT("AnimationEditor")));
AssetEditorOptions.AddUnique(FAssetEditorOptions(TEXT("AnimationBlueprintEditor")));
AssetEditorOptions.AddUnique(FAssetEditorOptions(TEXT("PhysicsAssetEditor")));
for(FAssetEditorOptions& EditorOptions : AssetEditorOptions)
{
EditorOptions.SetViewportConfigsToDefault();
}
SectionTimingNodeColor = FLinearColor(0.39f, 0.39f, 1.0f, 0.75f);
NotifyTimingNodeColor = FLinearColor(0.8f, 0.1f, 0.1f);
BranchingPointTimingNodeColor = FLinearColor(0.5f, 1.0f, 1.0f);
bAutoAlignFloorToMesh = true;
NumFolderFiltersInAssetBrowser = 2;
bUseAudioAttenuation = true;
CurveEditorSnapInterval = 0.01f;
// Default to millisecond resolution
TimelineScrubSnapValue = 1000;
TimelineDisplayFormat = EFrameNumberDisplayFormats::Frames;
bTimelineDisplayPercentage = true;
bTimelineDisplayFormatSecondary = true;
bTimelineDisplayCurveKeys = false;
TimelineEnabledSnaps = { "CompositeSegment", "MontageSection" };
bExpandTreeOnSelection = true;
}
void UPersonaOptions::SetShowGrid( bool bInShowGrid )
{
bShowGrid = bInShowGrid;
SaveConfig();
}
void UPersonaOptions::SetHighlightOrigin( bool bInHighlightOrigin )
{
bHighlightOrigin = bInHighlightOrigin;
SaveConfig();
}
void UPersonaOptions::SetViewModeIndex( FName InContext, EViewModeIndex InViewModeIndex, int32 InViewportIndex )
{
check(InViewportIndex >= 0 && InViewportIndex < 4);
FAssetEditorOptions& Options = GetAssetEditorOptions(InContext);
Options.ViewportConfigs[InViewportIndex].ViewModeIndex = InViewModeIndex;
SaveConfig();
}
void UPersonaOptions::SetAutoAlignFloorToMesh(bool bInAutoAlignFloorToMesh)
{
bAutoAlignFloorToMesh = bInAutoAlignFloorToMesh;
SaveConfig();
}
void UPersonaOptions::SetMuteAudio( bool bInMuteAudio )
{
bMuteAudio = bInMuteAudio;
SaveConfig();
}
void UPersonaOptions::SetUseAudioAttenuation( bool bInUseAudioAttenuation )
{
bUseAudioAttenuation = bInUseAudioAttenuation;
SaveConfig();
}
void UPersonaOptions::SetViewFOV( FName InContext, float InViewFOV, int32 InViewportIndex )
{
check(InViewportIndex >= 0 && InViewportIndex < 4);
FAssetEditorOptions& Options = GetAssetEditorOptions(InContext);
Options.ViewportConfigs[InViewportIndex].ViewFOV = InViewFOV;
SaveConfig();
}
void UPersonaOptions::SetCameraSpeed(FName InContext, int32 InCameraSpeed, int32 InViewportIndex)
{
check(InViewportIndex >= 0 && InViewportIndex < 4);
FAssetEditorOptions& Options = GetAssetEditorOptions(InContext);
Options.ViewportConfigs[InViewportIndex].CameraSpeedSetting = InCameraSpeed;
SaveConfig();
}
void UPersonaOptions::SetCameraSpeedScalar(FName InContext, float InCameraSpeedScalar, int32 InViewportIndex)
{
check(InViewportIndex >= 0 && InViewportIndex < 4);
FAssetEditorOptions& Options = GetAssetEditorOptions(InContext);
Options.ViewportConfigs[InViewportIndex].CameraSpeedScalar = InCameraSpeedScalar;
SaveConfig();
}
void UPersonaOptions::SetViewCameraFollow( FName InContext, EAnimationViewportCameraFollowMode InCameraFollowMode, FName InCameraFollowBoneName, int32 InViewportIndex )
{
check(InViewportIndex >= 0 && InViewportIndex < 4);
FAssetEditorOptions& Options = GetAssetEditorOptions(InContext);
Options.ViewportConfigs[InViewportIndex].CameraFollowMode = InCameraFollowMode;
Options.ViewportConfigs[InViewportIndex].CameraFollowBoneName = InCameraFollowBoneName;
SaveConfig();
}
void UPersonaOptions::SetDefaultLocalAxesSelection( uint32 InDefaultLocalAxesSelection )
{
DefaultLocalAxesSelection = InDefaultLocalAxesSelection;
SaveConfig();
}
void UPersonaOptions::SetDefaultBoneDrawSelection(uint32 InDefaultBoneDrawSelection)
{
DefaultBoneDrawSelection = InDefaultBoneDrawSelection;
SaveConfig();
}
void UPersonaOptions::SetShowMeshStats( int32 InShowMeshStats )
{
ShowMeshStats = InShowMeshStats;
SaveConfig();
}
void UPersonaOptions::SetSectionTimingNodeColor(const FLinearColor& InColor)
{
SectionTimingNodeColor = InColor;
SaveConfig();
}
void UPersonaOptions::SetNotifyTimingNodeColor(const FLinearColor& InColor)
{
NotifyTimingNodeColor = InColor;
SaveConfig();
}
void UPersonaOptions::SetBranchingPointTimingNodeColor(const FLinearColor& InColor)
{
BranchingPointTimingNodeColor = InColor;
SaveConfig();
}
FAssetEditorOptions& UPersonaOptions::GetAssetEditorOptions(const FName& InContext)
{
FAssetEditorOptions* FoundOptions = AssetEditorOptions.FindByPredicate([InContext](const FAssetEditorOptions& InOptions)
{
return InOptions.Context == InContext;
});
if(!FoundOptions)
{
AssetEditorOptions.Add(FAssetEditorOptions(InContext));
return AssetEditorOptions.Last();
}
else
{
return *FoundOptions;
}
}
void UPersonaOptions::PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent)
{
Super::PostEditChangeProperty(PropertyChangedEvent);
OnSettingsChange.Broadcast(this, PropertyChangedEvent.ChangeType);
}