Users can now choose a set of relevant units to display applicable properties in.
Setting a single unit for a given type will result in only that unit ever being used. When multiple exist, the most appropriate unit will be shown when a property editor is opened, and will remain in this unit until something else is selected.
[CL 2519064 by Andrew Rodham in Main branch]
Also added a default input unit that is used when no units are specified on a text input.
This addresses UE-11863 and UE-9313
[CL 2499638 by Andrew Rodham 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]
I have reviewed each change carefully, but it is a large change and I could have missed something! Here is a summary of the types of changes in this CL:
* Made nullptr checks consistent (the plurality of the changes are of this type)
* Completed switch statements (IE, switch did not explicitly handle default case, but had unhandled enum entries - this is the second most popular type of fix)
* Removed unused variables
* Removed redundant initializations
* WidgetNavigationCustomization.cpp was fixed by the owner
* integers converted to floats where result was stored in a float
* Removed redundent null checks (e.g. before delete statements)
* Renamed variables to prevent non-obvious shadowing
* Fixed use of bitwise & when checking for equality to an enum entry (which is often 0)
* Fixes for some copy paste errors (e.g. FoliageEdMode.cpp)
[CL 2498053 by Dan Oconnor in Main branch]
These can be generally described as removing redundant condition checks, using logical operators instead of bitwise operators, removal of redundant parenthesis, and consistent use of pragma push and pragma pop. There is very little observable behavior change in this CL.
Changes that required further review are pending in 2489753
[CL 2489804 by Dan Oconnor in Main branch]
UE-9554 - Add BP/C++ Component's Show all classes list not expanded by default
It now hides the Object root if UObject is not a valid base class type, as this allows the next level of classes to be expanded out which looks much better when adding new component classes.
This involved a lot of shuffling of module dependencies so that we could link GameProjectGeneration to ClassViewer, as previously ClassViewer was directly linking to GameProjectGeneration.
I went through and fixed everything that was linking to GameProjectGeneration to instead list it as a dynamic dependency (which it is, as nothing needs to link to it), and then verified that everything was using ClassViewer correctly (found some places that were only marking it as a dynamic dependency without also adding it as an include module, causing issues with missing API macro definitions as they were including ClassViewer headers via a relative include path).
#codereview Andrew.Rodham
[CL 2451499 by Jamie Dale in Main branch]
UE-9699 - Fixing all the places we were setting the asset size to 0 explictly, the new default reasonable size is .1, all asset pickers now just use the default, unless they're the content browser.
#lockdown Matt.Kuhlenschmidt
[CL 2449865 by Matthew Griffin in Main branch]
Editor - The asset pickers now all save their changes to size so that you don't have to resize it every time you go to pick an asset.
[CL 2446740 by Matthew Griffin in Main branch]
FText DisplayString shared ptrs are persisted across property edits. This preserves their entry in the live table and also updates the string that the entry points to. We call GetString() to update the hashed value as persisting the DisplayString means that its location in the table is preserved.
On serialization, a valid key is still found in the live table for the display string, so the key is preserved.
Added funtionality to the property editor to allow key editing and re-generation so any key conflicts can be resolved in the future.
Added new flag to prevent us from being able to edit 'immutable' code-declared (LOCTEXT) text. We dont attempt to preseve the identity of properties that are initialized with these.
UE-5350 - As a translator, I would like the editor tutorial text to preserve it's history between changes in order to greatly improve the translation workflow.
#codereview Saul.Abreu,Justin.Sargent
[CL 2420329 by Thomas Sarkanen in Main branch]
#jira UE-7668 - Levels browser: Streaming volumes property customization shows object name instead of actor label
[CL 2411058 by Richard TalbotWatkin in Main branch]
#jira UE-7384 - Using "Create New Asset" twice in a row causes an ensure generating the error message
[CL 2403504 by Richard TalbotWatkin in Main branch]
UETOOL-213 - Minimize Slate FString -> FText conversion (remove SLATE_TEXT_ATTRIBUTE)
This fixes any editor/engine specific code that was passing text to Slate as FString rather than FText.
[CL 2401019 by Jamie Dale in Main branch]
FText DisplayString shared ptrs are persisted across property edits. This preserves their entry in the live table and also updates the string that the entry points to. We call GetString() to update the hashed value as persisting the DisplayString means that its location in the table is preserved.
On serialization, a valid key is still found in the live table for the display string, so the key is preserved.
Added funtionality to the property editor to allow key editing and re-generation so any key conflicts can be resolved in the future.
UE-5350 - As a translator, I would like the editor tutorial text to preserve it's history between changes in order to greatly improve the translation workflow.
Reviewed by Saul.Abreu
[CL 2400879 by Thomas Sarkanen in Main branch]