- 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]
- CDO property values that have changed after hot-reload will now be propagated to the existing instances
- Adding code to a non-code project will no longer require restarting the editor to be able to work with new code (the new module will automatically be compiled and loaded)
[CL 2385307 by Robert Manuszewski in Main branch]
The auto-startup module list is now compiled to:
1. Exe if the target is a program.
2. Game module binary if the target is game, editor etc.
#codereview Robert.Manuszewski
[CL 2344885 by Jaroslaw Palczynski in Main branch]
Note: the changes here are only for Mac - it is likely that similar changes will be needed for other Clang platforms when they get upgraded.
#codereview dmitry.rekman,michael.trepka,mark.satterthwaite,robert.manuszewski
[CL 2331703 by Steve Robb in Main branch]
#change Removed GGameName usage from code and replaced it with FApp::*GameName API
#change Added FApp::SetGameName(), FApp::IsGameNameEmpty()
#change Added IFileManager::GetFilenameOnDisk to get the correct case of a filename on disk
#change Renamed GGameName to GInternalGameName
[CL 2328446 by Robert Manuszewski in Main branch]
#change UBT: Added support for hot-reload when UBT is called from IDE and the current target is curring
#change Added support for hot-reload from VS to the engine
#change Refactored hot-reload functionality to a separarte module
#change Added hot-reload analytics events
[CL 2255801 by Robert Manuszewski in Main branch]
In contrast to the previous system, this does not require special-casing for Rocket builds and will work correctly for nightlies and other out-of-band releases. It also removes the requirement for games to adhere to a strict format of version string on Windows for the editor to be able to load them, since the new data is injected indepdendently of the default resource by UBT.
#codereview Robert.Manuszewski, Michael.Trepka
[CL 2111949 by Ben Marsh in Main branch]