Removing this field saves significant memory and allows removing a per-thread variable to improve performance overall
Fix a redundant dereference in SynchronousLoad and use a faster IsValid function for validating a weak pointer after resolve
#jira UE-187216
#rb robert.millar
[CL 25792946 by ben zeigler in ue5-main branch]
Only preload the current package instead of the whole hierarchy recursively
#rnx
#rb PJ.Kack, Francis.Hurteau
#preflight 64788f45947ff6973c0a1e7c
[CL 25788188 by danny couture in ue5-main branch]
HasNonEditorOnlyReferences needs to be applied to suppress the checking of archetype and class for editoronly. It already applies to suppressing IsNeededForClient=false and IsEditorOnly=true, but checking the archetype+class also needs to be suppressed. This is necessary to support instances of UWidgetBlueprint, because the UWidgetBlueprint type and CDO are in the UMGEditor package and so are editoronly. But instances of UWidgetBlueprint, like instances of UBlueprint, should be treated as not editoronly when saving in editor.
Remove the workaround for WidgetBlueprints that was added in HarvestPackage - harvesting CDOs as toplevel objects even though they are not RF_Standalone.
Related but not vital: Deprecate bCheckMarks argument from IsEditorOnlyObject. SavePackage was the only user and no longer uses it.
#rb Francis.Hurteau
#rnx
#preflight 6477be677f02573726abebf9
[CL 25763169 by Matt Peters in ue5-main branch]
Bitfields were previously not supported because there was no exposed way of determining how an FBoolProperty is mapped in memory. Using fast pointer offsets would have previously caused us to always stomp a full byte over the address. Since we now support meta-data on property components (which is already used by colors and vectors), we can use the FBoolProperty when resolving the property to detect the bitoffset if FBoolProperty::IsNativeBool is false. (see usage of CountTrailingZeros64 inside FBoolHandler)
For my test this pulls down the cost of assigning boolean flags for PostProcessingOverrides from 15us to 1.7us.
Other miscellaneous changes included:
- Added a way for traits to tell the component handlers that they are not composite property types. This causes them to use direct property setters rather than requiring a composite temporary, and prevents the handler from instantiating partial property setter code.
- Moved custom accessor functions into their own file. Added one for ULightComponent::VolumetricScatteringIntensity.
#rb Ludovic.Chabant, Max.Chen
#preflight 647907a6e319748a835fbd06
[CL 25760044 by andrew rodham in ue5-main branch]
changed how the Object Handle index stores info to be able to get the class of the outer objects
Packages dont' store a ObjectPathId or ClassDescriptor as it is always known
https://p4-swarm.epicgames.net/reviews/25378953
#rb zousar.shaker
#preflight 64791957e25209b6cbbb45fc
[CL 25747367 by joe pribele in ue5-main branch]
this matches the uht generated code more closesly
https://p4-swarm.epicgames.net/reviews/25707323
#rb matt.peters
#preflight 64791483e25209b6cbb931ac
[CL 25746642 by joe pribele in ue5-main branch]
Added some usage of the macro around FMath::ConstExprCeilLogTwo.
#rb devin.doucette
#preflight 6478c777c26e3b24490353a0
[FYI] andrew.scheidecker
[CL 25736427 by steve robb in ue5-main branch]
I've reviewed all code using async requests and we had multiple places incorrectly handling the stat: some placed failed to decrease the counter, while others would decrease it when they shouldn't. The main cause was the fact that when we create an async request and pass nullptr as the target memory, the request allocates the memory itself and increases the STAT_AsyncFileMemory. However, when we call GetReadResults() on such requests, the responsibility is on the caller to balance the calls and decrease the stat, which is not very obvious and leads to the mentioned bugs. On top of that, when we call GetReadResults() we may not have the knowledge as to whether the returned memory was allocated by the request or not (which may affect whether we should touch the stat at all).
Resolved by adding IAsyncReadRequest::ReleaseMemoryOwnershipImpl member, which may be used by request implementations to do the proper clean up (balance the stat). This way requests take the full responsibility for their changes and users of the requests don't need to know their implementation details.
#preflight none
#rb Patrick.Laflamme
#jira UE-185064
[CL 25664733 by Wojciech Krywult in ue5-main branch]
[FYI] Maxime.Mercier
Original CL Desc
-----------------------------------------------------------------
Fix reference replacement of set not being rehash when key are replaced
#rb [at]Steve.Robb
#preflight 646e2d4d1134ffac70a5d655
[CL 25644174 by maxime mercier in ue5-main branch]