Newly installed versions of the engine will now attempt to copy the project-agnostic config settings from a previous engine installation. This happens by way of a versioned manifest that copies old versions when the manifest does not exist, or is a different version. This code path is benign for non-installed versions of the engine (or FPaths::ShouldSaveToUserDir() is false).
EditorGameAgnosticSettings and EditorUserSettings ini paths have been renamed to EditorSettings and EditorPerProjectUserSettings respectively to better convey their purpose. In general, most settings should be saved in EditorSettings (project-agnostic) so that they apply regardless of which project is open. We have some way to go migrating existing settings for this to be the case, however.
Some previously per-project configuration files are now project-agnostic (such as Editor.ini, EditorKeyBindings.ini, and EditorLayout.ini)
GEditor->Access...Settings and GEditor->Get...Settings have been removed in favor of direct access of the CDO through GetMutableDefault<> and GetDefault<> respectively. Global config ini filenames that are not set up are now neither loaded nor saved on build machines, to handle the problem of indeterminate state more generically.
This addresses UETOOL-270 (Most editor preferences should be project-agnostic)
[CL 2517558 by Andrew Rodham in Main branch]
Rob asked me to back out GENERATED_*_BODY -> GENERATED_BODY change for now until the "_Validate and _Implementation auto-generation" discussion is over.
#codereview Robert.Manuszewski
[CL 2481343 by Jaroslaw Palczynski in Main branch]
The display name, filter string, and tooltips for the property editor (and associated detail customizations) are now stored as FText rather than FString. This allows us to remove SLATE_TEXT_ARGUMENT from the detail customization widgets.
[CL 2372595 by Jamie Dale in Main branch]
- Remove disabled/legacy 'bake and prune' functions/vars
UE-2968 Make FBodyInstance::bUseAsyncScene protected (add SetUseAsyncScene)
#codereview ori.cohen
[CL 2358393 by James Golding in Main branch]
- made public headers compilable individually
- moved interfaces to public root
- removed module singleton getter
- code and documentation cleanup
#UpgradeNotes:
- instead of ISettingsEditorModule::GetRef() use FModuleManager::GetModuleChecked<ISettingsModule>("SettingsModule")
- instead of including SettingsEditor.h include the interface headers you actually use
[CL 2340730 by Max Preussner in Main branch]
- made public headers compilable individually
- easier access to settings section delegates
- removed module singleton accessor
- moved non-trivial definitions into cpp files
- code & documentation cleanup
#UpgradeNotes:
- instead of ISettingsModule::Get() use FModuleManager::GetModulePtr<ISettingsModule>("Settings")
- instead of using FSettingsSectionDelegates assign delegates directly through the new ISettingsSection methods
[CL 2340711 by Max Preussner in Main branch]
* Moved Slate.h into SlateBasics.h and began shifting less commonly used headers into SlateExtras.h.
* Slate.h now simply includes SlateBasics.h and SlateExtras.h.
* Slate.h includes a deprecated warning now to indicate that SlateBasics.h + specific includes should be used instead.
* Moved dozens of inlined functions using Slate widgets into .cpp files to avoid header dependencies.
* All code samples now include SlateBasics.h and SlateExtras.h so future shifts will not break most those projects, but not trigger the deprecation warning of including Slate.h.
#BUN
[CL 2329610 by Wes Hunt in Main branch]
- The very large OpenGLMac file has been broken up:
- MacOpenGLContext provides the FPlatformOpenGLContext wrapper around NSOpenGLContext & various helpers.
- MacOpenGLQuery provides the GL_TIMESTAMP emulation wrappers.
- The OpenGL/DisplayMask ini setting specifies an explicit display mask for all contexts just as before.
- The OpenGL/RendererID ini setting specifies an explicit rendering device to use for all contexts, but this is just the initial setting.
- The OpenGL/bUseMultipleRenderers ini setting allows contexts to contain multiple GPUs & render windows using the GPU for the appropriate display, only useful for desktops with multiple GPUs, in this mode the explicit rendering device is only used for offscreen rendering. To qualify all GPUs must provide the same OpenGL version.
- The OpenGL/bAllowAutomaticGraphicsSwitching ini setting turns on automatic graphics switching support which allows for switching between discrete & integrated GPUs which provide the same OpenGL version.
- The r.Mac.ExplicitRendererID cvar allows changing the explicit rendering device used when is OpenGL/bAllowAutomaticGraphicsSwitching enabled, rather than the default which updates the contexts to use the online device, whatever that may be.
- Renderer dependent variables are updated whenever the renderer changes to ensure rendering consistency.
- The plugin provides an editor preferences panel & for laptops using bAllowAutomaticGraphicsSwitching a live drop-down in the LevelEditor window to select the current GPU.
#codereview michael.trepka
[CL 2300768 by Mark Satterthwaite in Main branch]