This change consists of multiple changes:
Core:
- Deprecation of ANY_PACKAGE macro. Added ANY_PACKAGE_DEPRECATED macro which can still be used for backwards compatibility purposes (only used in CoreUObject)
- Deprecation of StaticFindObjectFast* functions that take bAnyPackage parameter
- Added UStruct::GetStructPathName function that returns FTopLevelAssetPath representing the path name (package + object FName, super quick compared to UObject::GetPathName) + wrapper UClass::GetClassPathName to make it look better when used with UClasses
- Added (Static)FindFirstObject* functions that find a first object given its Name (no Outer). These functions are used in places I consider valid to do global UObject (UClass) lookups like parsing command line parameters / checking for unique object names
- Added static UClass::TryFindType function which serves a similar purpose as FindFirstObject however it's going to throw a warning (with a callstack / maybe ensure in the future?) if short class name is provided. This function is used in places that used to use short class names but now should have been converted to use path names to catch any potential regressions and or edge cases I missed.
- Added static UClass::TryConvertShortNameToPathName utility function
- Added static UClass::TryFixShortClassNameExportPath utility function
- Object text export paths will now also include class path (Texture2D'/Game/Textures/Grass.Grass' -> /Script/Engine.Texture2D'/Game/Textures/Grass.Grass')
- All places that manually generated object export paths for objects will now use FObjectPropertyBase::GetExportPath
- Added a new startup test that checks for short type names in UClass/FProperty MetaData values
AssetRegistry:
- Deprecated any member variables (FAssetData / FARFilter) or functions that use FNames to represent class names and replaced them with FTopLevelAssetPath
- Added new member variables and new function overloads that use FTopLevelAssetPath to represent class names
- This also applies to a few other modules' APIs to match AssetRegistry changes
Everything else:
- Updated code that used ANY_PACKAGE (depending on the use case) to use FindObject(nullptr, PathToObject), UClass::TryFindType (used when path name is expected, warns if it's a short name) or FindFirstObject (usually for finding types based on user input but there's been a few legitimate use cases not related to user input)
- Updated code that used AssetRegistry API to use FTopLevelAssetPaths and USomeClass::StaticClass()->GetClassPathName() instead of GetFName()
- Updated meta data and hardcoded FindObject(ANY_PACKAGE, "EEnumNameOrClassName") calls to use path names
#jira UE-99463
#rb many.people
[FYI] Marcus.Wassmer
#preflight 629248ec2256738f75de9b32
#codereviewnumbers 20320742, 20320791, 20320799, 20320756, 20320809, 20320830, 20320840, 20320846, 20320851, 20320863, 20320780, 20320765, 20320876, 20320786
#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 20430220 via CL 20433854 via CL 20435474 via CL 20435484
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v949-20362246)
[CL 20448496 by robert manuszewski in ue5-main branch]
* Prevent actors outside the destruction radius but inside the current OutOfRange radius check from being added to the OutOfRange list.
* Instead keep actors in the PendingDestructionList until they get inside the send radius or outside the OutOfRange radius.
#rb Brian.Bekich, Jon.Sourbeer
#ROBOMERGE-AUTHOR: louisphilippe.seguin
#ROBOMERGE-SOURCE: CL 20229549 via CL 20229567 via CL 20229593 via CL 20229612
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
[CL 20231614 by louisphilippe seguin in ue5-main branch]
Handle emptying the map name if CurrentMapName == DestinationMapName when no transition map is specified, and remove LastCompletedSeamlessTravelCount == SeamlessTravelCount check from APlayerController::HasClientLoadedCurrentWorld to prevent issues when client finishes travel before the server.
#jira UE-96063
#rb Ryan.Gerleve, LouisPhilippe.Seguin
#ROBOMERGE-AUTHOR: alex.koumandarakis
#ROBOMERGE-SOURCE: CL 19903360 via CL 19904489 via CL 19905622
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
[CL 19907190 by alex koumandarakis in ue5-main branch]
* Added option to manually disable untracked class reporting
# FN Shipping servers using minimal explicit class tracking now disable the untracked class reporting.
#rb Brian.Bekich
#ROBOMERGE-AUTHOR: louisphilippe.seguin
#ROBOMERGE-SOURCE: CL 19384374 via CL 19384381 via CL 19386057 via CL 19397883 via CL 19397986
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)
[CL 19403145 by louisphilippe seguin in ue5-main branch]
Adding scope count to the granular logging
#rb ryan.gerleve
#ROBOMERGE-AUTHOR: brian.bekich
#ROBOMERGE-SOURCE: CL 18955682 via CL 18955724 via CL 18955740 via CL 18956420 via CL 18956783
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)
[CL 18958918 by brian bekich in ue5-main branch]
#rb louisphilippe.seguin
#ROBOMERGE-AUTHOR: brian.bekich
#ROBOMERGE-SOURCE: CL 18936931 via CL 18936955 via CL 18936975 via CL 18937792 via CL 18938303
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)
[CL 18938378 by brian bekich in ue5-main branch]
#rb louisphilippe.seguin, jon.nabozny
#ROBOMERGE-AUTHOR: brian.bekich
#ROBOMERGE-SOURCE: CL 18922219 via CL 18922430 via CL 18922585 via CL 18923565 via CL 18923970
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v916-18915374)
[CL 18923979 by brian bekich in ue5-main branch]
#rb ryan.gerleve
#ROBOMERGE-AUTHOR: brian.bekich
#ROBOMERGE-SOURCE: CL 18885436 via CL 18885444 via CL 18885445 via CL 18888433 via CL 18888865
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18888899 by brian bekich in ue5-main branch]
#rb Brian.Bekich
#ROBOMERGE-AUTHOR: satchit.subramanian
#ROBOMERGE-SOURCE: CL 18834481 via CL 18834756 via CL 18837934 via CL 18838048 via CL 18838134 via CL 18845135 via CL 18845743
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18845813 by satchit subramanian in ue5-main branch]
* Allow explicit base names when creating graph nodes.
* This can improve readability when using logging and debug cmds like RepGraph.PrintGraph
#rb Brian.Bekich
#ROBOMERGE-AUTHOR: louisphilippe.seguin
#ROBOMERGE-SOURCE: CL 18760048 via CL 18760096 via CL 18760126 via CL 18761395 via CL 18762864
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18763196 by louisphilippe seguin in ue5-main branch]
* Wrapped the call of ReplicateSingleActor for all the actors for a given connection in its own function so that it can be overridden.
* FObjectReplicator::ReplicateProperties now has an override for passing in a custom FNetBitWriter implementation.
* Added a replication flag for custom subobject serialization on UActorChannel for a class that derives from it.
#rb brian.bekich, louisphilippe.seguin
#preflight 61df3e7f6a16a18acf872d05
#ROBOMERGE-AUTHOR: bart.hawthorne
#ROBOMERGE-SOURCE: CL 18590284 via CL 18591876 via CL 18591889 via CL 18591905 via CL 18592543 via CL 18592575 via CL 18592581
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Test -> Main) (v899-18417669)
[CL 18592589 by bart hawthorne in ue5-main branch]
Fix crash in rep graph debugging post seamless travel
#jira UE-121583
#rb louisphilippe.seguin
#ROBOMERGE-AUTHOR: brian.bekich
#ROBOMERGE-SOURCE: CL 18544418 via CL 18544438 via CL 18544461 via CL 18544797 via CL 18544844
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18544878 by brian bekich in ue5-release-engine-test branch]
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035
[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485
[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]