The following code would call the int overload rather than the name overload when passed an EName constant, which could easily lead to confusion and bugs:
using FMyId = uint8;
void DoThing(FName);
void DoThing(FMyId);
DoThing(NAME_Actor);
The change to use enum class requires that any code that actually deals with EName as an int (mostly internal name code and serialisation) be updated to explicitly cast, but prevents the implicit conversion that causes the issue above.
In order to preserve the NAME_X aliases that the old-style enum added to the global scope, new aliases have been added that point to the EName scoped versions. Unfortunately these can cause shadowing warnings if NAME_X is defined in the local scope, as the old-style enum used to allow that without shadowing, however there is no way to prevent this so we'll just need to fix any warnings that occur.
#rb Johan.Torp
#preflight 6087e06349a9840001414708
[CL 16126708 by Jamie Dale in ue5-main branch]
Interleave polling of packages in external read queue with processing of normal work queue nodes.
#rb per.larsson, carlmagnus.nordin
#rnx
[CL 16049103 by PJ Kack in ue5-main branch]
- The manifest was for a prototype version of the IoStore commandlet and would attempt to record every bulkdata entry during a cook, which would allow us to generate the FioChunkId for each bulkdata entry when building the ucas files.
- Due to changes during development we stopped requiring this data and it was never used in actual production code.
- Since this code was never in use we can just remove it.
* IoStoreUtilities
- No longer attempt to load the manifest
- Removed use of BulkdataTypeToChunkIdType and just use the EIoChunkType directly instead.
#rb CarlMagnus.Nordin
#jira UE-112697
#test Full stage of ShooterGame
#rnx
#preflight 606f039028671300019c806a
[CL 15954210 by paul chipchase in ue5-main branch]
Updated references to UE4 to Unreal in NetworkFileConnection.cpp
This required references to GPackageFileUE4Version and GPackageFileLicenseeUE4Version to also be updated to GPackageFileUnrealVersion and GPackageFileLicenseeUnrealVersion accordingly
#ROBOMERGE-SOURCE: CL 15850452 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v786-15839533)
[CL 15851651 by mark lintott in ue5-main branch]
Changes control of the feature to uniformly require the -LazyLoadImports commandline switch.
Ensures that serialization of ObjectPtr fields for blueprints doesn't differ between raw pointer (Object) fields. INSTANCES of these types were already serialized identically (wrote out the same type identifier in tagged property serialization), but the serialized type descriptors (used by blueprints) write out the FFieldClass::GetName, and that differed between FObjectProperty and FObjectPtrProperty, and this change addresses that discrepancy.
Allow ObjectPtr fields to be instantiated in place of Object fields in script/blueprint in editor builds while ensuring that they are serialization compatible and considered equal types.
#rb francis.hurteau
#rb marc.audy
#fyi devin.doucette
#fyi robert.manuszewski
#preflight 605cbf325e87c40001b74f5b
[CL 15827275 by Zousar Shaker in ue5-main branch]
This fixes a mismatch between bulkdata flags and the bulkdata payload that occurred when loading a package from the EditorDomain that was saved with BULKData_WorkspaceDomainPayload even though the bulkdata was modified in memory on load.
#rb Paul.Chipchase
#rnx
[CL 15737049 by Matt Peters in ue5-main branch]
-Compile in lazy resolve functionality for editor binaries
-Add "-LazyResolveAllImports" commandline switch to allow lazy RESOLVE of all wrapped object references
-Functionality confirmed: load default map in ShooterGame Editor, cook ShooterGame, load LumenReflectiveTest in FortGPUTestbed, load default map and P_Construct in Frosty
-Renamed "-DisableLoadingAllImports" to "-LazyLoadAllImports" commandline switch to allow lazy LOAD of all wrapped object references and ensured it works with AsyncLoading code path
-Non functional when combined with lazy resolve - will be worked on afterwards
-Added CPU timing scopes to measure performance impact of lazy resolve
Fixed lazy resolve bugs:
-Ensure null check on an unresolved object reference resolves the object reference (a non-null unresolved reference can become a null resolved reference)
-Ensure hash of an unresolved object reference resolves the object reference and hashes the resultant address (otherwise we can't reliably ensure hash consistency in the face of object redirection or stale references)
-Avoid using package name hash internally as it immediately manifested in hash collisions on a moderately sized project
-Ensure StaticFindObjectFastInternal instead of StaticFindObjectFast to ensure we can find/resolve not fully loaded objects
-Ensure UObjectRedirectors are handled when resolving wrapped object pointers
-Ensure we handle the possibility that a package has been partially loaded and we may not find our target object within it because the object hasn't been created yet
Automated testing:
-Adding hash consistency and redirector resolve tests to ObjectPtr unit tests
#rb devin.doucette
[CL 15571874 by Zousar Shaker in ue5-main branch]
Static analyzer always evaluates expressions in check(), despite DO_CHECK=0 due to implementation of check():
#define check(expr) { CA_ASSUME(expr); }
If checked expression depends on something that's wrapped in `#if DO_CHECK`, it will produce a compile error. The fix is to add USING_CODE_ANALYSIS condition where applicable.
#robomerge Release-5.0-EarlyAccess
#rb Steve.Robb
[CL 15527660 by Yuriy ODonnell in ue5-main branch]
-Add "-LazyResolveAllImports" commandline switch to allow lazy RESOLVE of all wrapped object references
-Functionality confirmed: load default map in ShooterGame Editor, cook ShooterGame, load LumenReflectiveTest in FortGPUTestbed, load default map and P_Construct in Frosty
-Renamed "-DisableLoadingAllImports" to "-LazyLoadAllImports" commandline switch to allow lazy LOAD of all wrapped object references and ensured it works with AsyncLoading code path
-Non functional when combined with lazy resolve - will be worked on afterwards
-Added CPU timing scopes to measure performance impact of lazy resolve
Fixed lazy resolve bugs:
-Ensure null check on an unresolved object reference resolves the object reference (a non-null unresolved reference can become a null resolved reference)
-Ensure hash of an unresolved object reference resolves the object reference and hashes the resultant address (otherwise we can't reliably ensure hash consistency in the face of object redirection or stale references)
-Avoid using package name hash internally as it immediately manifested in hash collisions on a moderately sized project
-Ensure StaticFindObjectFastInternal instead of StaticFindObjectFast to ensure we can find/resolve not fully loaded objects
-Ensure UObjectRedirectors are handled when resolving wrapped object pointers
-Ensure we handle the possibility that a package has been partially loaded and we may not find our target object within it because the object hasn't been created yet
Automated testing:
-Adding hash consistency and redirector resolve tests to ObjectPtr unit tests
#rb devin.doucette
[CL 15514386 by Zousar Shaker in ue5-main branch]