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]
#jira UE-138828
#fix added missing variable name to AnimRecorder controller scoped bracket (meant that it wasn't acting as RAII)
#misc switched AttributeCurve::RemoveRedundant keys to just generate new keys array rather than removing individual keys
#rb Max.Chen
#preflight 627b8dc69f7ad2a14b473522
[CL 20136149 by Jurre deBaare in ue5-main branch]
AnimationRecorder now has IncludeAnimationNames and ExcludeAnimationNames lists. Bones and curves are tested against this list to determine whether they should be recorded.
#jira UE-107875
#preflight 6259f730016074c111fa4165
#rb mike.zyracki
[CL 19795076 by Max Chen in ue5-main branch]
FTimecodeBoneMethod specifies the mode (ie. All, Root, UserDefined) and the bone name to assign to.
If the bone name doesn't exist, it will fall back to the root.
#jira UE-141229
#preflight 623264a16c05dd6bbc71964c
#rb matt.hoffman, mike.zyracki
[CL 19423235 by Max Chen in ue5-main branch]
#fix ensure that WriteIndex is used to populate curve-key data, which prevents frame-gaps from causing invalid keys
#jira UE-141329
#preflight 6203a140c61699ca27538ef3
#rb Mike.Zyracki
#ROBOMERGE-AUTHOR: jurre.debaare
#ROBOMERGE-SOURCE: CL 18917193 in //UE5/Release-5.0/... via CL 18926616 via CL 18927552
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v916-18915374)
[CL 18927604 by jurre debaare in ue5-main branch]
#jira UE-122078
#rb Andrew.Davidson, Colin.McGinley
#preflight standard build
#ROBOMERGE-AUTHOR: fred.kimberley
#ROBOMERGE-SOURCE: CL 18817999 in //UE5/Release-5.0/... via CL 18818012 via CL 18822871
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18824721 by fred kimberley in ue5-main branch]
Submitted on behalf of fred.kimberley
#rb andy.davidson
#preflight 61f8719ea6632a34f35e654b
#ROBOMERGE-AUTHOR: andrew.davidson
#ROBOMERGE-SOURCE: CL 18801709 in //UE5/Release-5.0/... via CL 18802160 via CL 18821533
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v908-18788545)
[CL 18821619 by andrew davidson in ue5-main branch]
#jira na
#rb na
#trivial
#preflight 61f8247e68795b2f457ce679
#ROBOMERGE-OWNER: mike.zyracki
#ROBOMERGE-AUTHOR: mike.zyracki
#ROBOMERGE-SOURCE: CL 18798274 in //UE5/Release-5.0/... via CL 18799894 via CL 18800288
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v908-18788545)
[CL 18801237 by mike zyracki in ue5-main branch]
#rb na
#trivial
#ROBOMERGE-AUTHOR: mike.zyracki
#ROBOMERGE-SOURCE: CL 18766519 via CL 18766551 via CL 18766723 via CL 18766740 via CL 18767426 via CL 18767596
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18767609 by mike zyracki in ue5-main branch]
These changes remove the last remnants of the TimecodeSource property that
was being stored directly on UMovieScene. UMovieScene is a container that may
represent multiple pieces of media as UMovieSceneSections, each of which may
have their own distinct TimecodeSource. The sections themselves manage setting
their own TimecodeSource when they are recorded or created from a piece of media.
Client code that is interested in the earliest TimecodeSource of any section in a movie
scene should use UMovieScene::GetEarliestTimecodeSource().
#rb max.chen
#preflight 61e9bd06ab6e1cc028b89f96
#ROBOMERGE-AUTHOR: matt.johnson
#ROBOMERGE-SOURCE: CL 18681887 in //UE5/Release-5.0/... via CL 18681942 via CL 18682001
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v902-18672795)
[CL 18682068 by matt johnson in ue5-main branch]
Enables toggling of exporting morph targets / attribute / material curves separately
Fixes issue when Transforms are not exported: zeroed keys were added instead of ref pose
#jira UE-137045
#preflight 18620216
#ROBOMERGE-AUTHOR: anatole.menichetti
#ROBOMERGE-SOURCE: CL 18621151 in //UE5/Release-5.0/... via CL 18621282 via CL 18621348
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)
[CL 18621396 by anatole menichetti in ue5-main branch]
#rb Francis.Hurteau
[RN] Core, Minor
#ROBOMERGE-AUTHOR: matt.peters
#ROBOMERGE-SOURCE: CL 18279152 in //UE5/Release-5.0/... via CL 18279174
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
[CL 18279186 by matt peters 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]
- Add support for double precision channels, curves, evaluation, blending, and all other runtime infrastructure.
- Note that, as usual for now, double channels load and save float values.
- Editor side also gains some new track editors for these new types, with some workarounds to correctly recognize between float and double vectors.
- Transform tracks are now operating entirely in doubles.
- Float recomposing APIs for keying tracks in the editor are now using doubles, and have been renamed to "value recomposing".
#rb max.chen
#preflight 6123f6d9e7a3070001ff37ed
#ROBOMERGE-SOURCE: CL 17278174 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v858-17259218)
[CL 17278198 by ludovic chabant in ue5-release-engine-test branch]