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]
#jira UE-6304 - Source Control: Add the ability to commit file deletions from the editor
#reviewedby Thomas.Sarkanen
[CL 2446774 by Richard TalbotWatkin in Main branch]
API break: added new pure virtual ISourceControlProvider::UsesChangelists()
API break: added new pure virtual ISourceControlState::FindHistoryRevision(const FString&)
API break: added new pure virtual ISourceControlRevision::GetRevision()
Implementing a Git provider requires us to be able to display revisions that are not indices as Git revisions are hashes. This updates the relvant code to allow us to display these revisions correctly.
[CL 2411986 by Thomas Sarkanen in Main branch]
#jira UE-4791 - LIVE: Level Merging creates a new empty level and deletes only one of the two levels merged
[CL 2350215 by Richard TalbotWatkin in Main branch]
#UE4 If you have actors from multiple levels selected, you can now move them to the selected level via the level browser. It will only move actors that are not already in the destination level.
--------
Integrated using branch Ue4-To-UE4-Fortnite-Simple (reversed) of change#2270697 by Bob.Tellez on 2014/08/25 12:47:35.
[CL 2270698 by Bob Tellez in Main branch]
#UE4 Deprecated ULevelStreaming::PackageName in favor of the new WorldAsset TAssetPtr. This will allow editor tools to properly follow references from persistent levels to sublevels. All existing usage of PackageName has been replaced with GetWorldAssetPackageName() and SetWorldAssetByPackageName().
--------
Integrated using branch Ue4-To-UE4-Fortnite-Simple (reversed) of change#2269772 by Bob.Tellez on 2014/08/24 16:49:38.
[CL 2269774 by Bob Tellez in Main branch]
#ttp 335669 - EDITOR: MATINEE: With matinee open if you move a matinee actor to the same or new level, it duplicates it
#branch UE4
[CL 2238128 by Andrew Brown in Main branch]
#UE4 Added support to drag and drop world assets on the level browser (specifically the level list in SWorldHierarchy) to add them as sublevels.
#codereview Dmitriy.Dyomin
--------
Integrated using branch Ue4-To-UE4-Fortnite-Simple (reversed) of change#2222841 by Bob.Tellez on 2014/07/17 18:26:40.
[CL 2227532 by Bob Tellez in Main branch]
#ttp 335669 - EDITOR: MATINEE: With matinee open if you move a matinee actor to the same or new level, it duplicates it
#branch UE4
#change Check to see if any of the selected actors are referenced in an open matinee, and ask the user if they want to close matinee to continue
reviewed by Thomas.Sarkanen
[CL 2225378 by Andrew Brown in Main branch]
#TTP 335685 - EDITOR: Level Browser: Allowed to click "move selected actor to level" on an actor that is already in the selected level
#branch UE4
#proj Editor.WorldBrowser
#proj Editor.Levels
#change Added a new method IsValidMoveActorsToLevel to both FLevelCollectionModel and FLevelCollectionViewModel, this is used to enable the Move Actor to level command for both cases. It scans the selected actors and checks their levels against the selected levels. If any actor is contained within any of the selected levels it disables the control. It also disables the control should there be no actors selected. If both of these cases pass it simply checks if the level is editable.
#reviewedby Chris.Wood
[CL 2113869 by Barnabas McManners in Main branch]
Breaking changes include:
* Rename of GEditorModeTools -> GLevelEditorModeTools to signify that it applies only to the level editor modes
* Addition of FEditorModeRegistry, responsible for managing and creating new editor modes. Modes are no longer registered with an instance of the mode, instead with a mode factory that is able to create a new mode of that type.
* Editor modes now operate on FEditorViewportClients rather than FLevelEditorViewportClients
* Added ability to specify an FEditorModeTools when creating an FEditorViewport
Moved component vizualiser manager handling outside of individual editor modes, and into FLevelEditorViewportClient. This should make it easier to transplant in future.
This work addresses TTP#334640 - EDITOR: Investigate making editor modes a per-'editor' concept
Reviewed by Michael Noland, Matt Kuhlenschmidt
[CL 2109245 by Andrew Rodham in Main branch]