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]
Made the Project Browser window a bit higher so it's clear that there's description text below the template image.
#jira UE-9085 - new project browser window clipping
[CL 2511581 by Richard TalbotWatkin in Main branch]
- Linkers are no longer UObjects. Renamed ULinker, ULinkerLoad and ULinkerSave to FLinker, FLinkerLoad, FLinkerSave respectively
- Linkers are now associated with their UPackages
- Linker version is now stored in UPackages
- Async loading is now performed on a separate thread (if platform supports it and only in cooked builds), with the exception of PostLoad which is still done on the game thread
- Added UObject::IsPostLoadThreadSafe() function to determine if PostLoad is thread safe and can be executed on the async loading thread (defaults to false)
- UObject creation is now thread safe and can be performed on any thread
- Move many of the linker/UObject globals into FUObjectThreadContext (TLS)
- GetAsyncLoadPercentage() now takes PostLoad into account
- More async loading stats
- Added AtomicallySetFlags/ClearFlags to UObject
- Made FModuleManager thread safe.
- Added FGCScopeGuard as means of preventing GC from executing from non-game thread
- It's possible to disable async loading thread through ini settings.
- Cancelling async loading will now also trigger GC
- Implemented a basic version of async streaming priorities.
Change 2410813 by Mikolaj Sieluzycki:
Change Sleep in while loop to ConditionalSleep in FMultiReaderSingleWriterGT
Change 2410734 by Mikolaj Sieluzycki:
Make FModuleManager thread safe.
Change 2399879 by Mikolaj Sieluzycki:
Basic version of async streaming priorities.
Change 2410707 by Mikolaj Sieluzycki:
Implement conditional and no stat versions of sleep.
Change 2371939 by Robert Manuszewski:
Async Loading Improvements: adding more stats (accumulators)
Change 2372403 by Robert Manuszewski:
Fixing compile errors when STATs are not enabled
Change 2371526 by Robert Manuszewski:
AsyncLoading Improvements (WIP)
Change 2407198 by Robert Manuszewski:
Re-implementing delegate fixes for Async Loading
Change 2407425 by Robert Manuszewski:
Re-implementing cancelling async loading in the async loading branch.
Change 2484362 by Robert Manuszewski:
Making it possible to disable async loading thread through ini settings.
Change 2484744 by Robert Manuszewski:
Minimizing locks in GC and other threads when handling UObjects
Change 2480190 by Robert Manuszewski:
Fixing infinite stall after canceling async loading in non-cooked builds
Change 2484268 by Robert Manuszewski:
Fixing crash when allocating permanent object pool.
Change 2489761 by Robert Manuszewski:
Fixing BulkData using linker archive on the main thread even if the linker was created on the async loading thread.
Change 2493624 by Robert Manuszewski:
Cancelling async loading will now also trigger GC
Change 2487881 by Robert Manuszewski:
Making ShaderIdMap operations thread safe.
Change 2488067 by Robert Manuszewski:
Fixing GetAsyncLoadPercentage. It will now also respect PostLoad.
Change 2458640 by Robert Manuszewski:
Fixing crash in PIE
Change 2458825 by Robert Manuszewski:
Fixing a few crashes when streaming and the package is missing.
Change 2476935 by Robert Manuszewski:
Fixing crash while async loading ANavigationData
Change 2477361 by Robert Manuszewski:
Fixing crashes in cooked game
Change 2480095 by Robert Manuszewski:
Making FUObjectArray more thread safe
Change 2475443 by Robert Manuszewski:
Re-enabling single-threaded async loading path for the editor and platforms that don't support multithreading.
Change 2475458 by Robert Manuszewski:
Making sure bulk data is only loaded on a separate thread if it's not being loaded on the async loading thread.
Change 2476661 by Robert Manuszewski:
Fixing FlushAsyncLoading not flushing everything
Change 2401089 by Jaroslaw Surowiec:
Core - Added AtomicallySetFlags/ClearFlags to UObject, added a comment to ThisThreadAtomicallyClearedRFUnreachable
[CL 2498249 by Robert Manuszewski in Main branch]
*because of tons of changes, I will supply the changelists in the email because it was too large for this checkin*
[CL 2483008 by Todd Eckert in Main branch]
fix for generating Target.cs when -nocodeproject is provided (removed -nocodeproject as it is no longer needed due to other fixes)
default plugins no longer cause a target file to be generated
#codereview ankit.khare, josh.adams, daniel.lamb
[CL 2473705 by Peter Sauerbrei in Main branch]
Some dialogs, e.g. from save menu actions, don't need the two options.
#jira UE-10400 - Clicking on Save All brings up same window as when closing the editor
[CL 2463740 by Richard TalbotWatkin in Main branch]
- Can now start the translation picker from the main Window menu in the editor
- Disable "save" button for text that we can't find the manifest/archive data for
- Hover window now presents the information about an FText in a more readable format
- Fixed issue where the same FText info was not displayed twice in certain cases
[CL 2452676 by Joe Conley in Main branch]
Add a separate option in the packaging settings for whether to include debug files, and let it default to off. PDBs in packaged games aren't usually necessary, and they bloat the packaged game a lot. Also move the Full Rebuild setting out of the advanced section so people can see it. UE-9983.
[CL 2450052 by Matthew Griffin in Main branch]
Stopped the "Compiling C++ Code" message in the editor MainFrame always having a cancel button
FModuleCompilerStartedEvent now passes a bool to say whether the hot-reload/compile operation is being run async, or whether it's blocking. We now only show the cancel button for async compiles, as the UI is otherwise blocked waiting for the compile to finish.
Added a bWaitForCompletion input parameter to DoHotReloadFromEditor. This mirrors the RebindPackages API that DoHotReloadFromEditor internally calls, and prevents UPackFactory needing to perform a manual tick.
[CL 2437789 by Matthew Griffin in Main branch]
There were two problems with this. One, I had to suppress registering build platforms in UBT if the project has no code. To achieve this I added new flag -nocodeproject and I'm passing it down from the editor to UAT.
The second one emerged after fixing previous one. The Editor was adding -build flag to the UAT if it found any of the VS 2012 or 2013. -build flag is making UAT to try to build, which fails as it is not supported on VS 2012-only system. During the discussion with platform team we came up with the solution to not check for VS 2012 in editor, as we only support it for XDK development, which requires both VSes on the system (2012 and 2013). Hence flag -build should be appended to the UAT command line if and only if there is VS2013 on the system.
[CL 2431415 by Jaroslaw Palczynski in Main branch]