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]
Disable event track and live link filters
Fix SupportsSequence logic so that track editors can't just blindly support a track if it's a level sequence. If it doesn't pass the permissions, the track is not supported
#preflight 62857944f239239af6b9c6be
#rb andrew.rodham
#ROBOMERGE-OWNER: max.chen
#ROBOMERGE-AUTHOR: max.chen
#ROBOMERGE-SOURCE: CL 20283972 via CL 20284129 via CL 20284318 via CL 20284323
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v948-20297126)
[CL 20304670 by max chen in ue5-main branch]
Moved Math forward declarations from CoreFwd.h to Math/MathFwd.h
#rb steve.robb
#preflight 62837df43c1cdc59e2b07dd5
[CL 20240602 by Andrew Davidson in ue5-main branch]
It's ok to keep this logic for these plugin tracks because they will be filtered out by UEFN just by the fact that the plugins aren't enabled.
#preflight 6270563191629533ec2b6f79
#rb andrew.rodham
[CL 20104761 by Max Chen in ue5-main branch]
Deprecate the "ComponentToControl" property of the LiveLinkComponentController
Add a customization for LiveLinkControllerBase that ensures the Component picker is displayed first in the details panel
Fix the fallout from the deprecation in USDImporter plugin
#jira UE-147579
#rb simon.therriault, daniel.coelho
#preflight 62790eb24561731dbeee939d
[CL 20101534 by Geoffrey Douglas in ue5-main branch]
Cleanup and prevent repeated widget recreation inside SUSDPrimInfo every time a prim is selected;
Fix duplicate call to FUsdSkelRootTranslator::UpdateComponents when creating skeletal mesh components;
#jira UETOOL-4915, UETOOL-4994, UETOOL-4995
#rb Anousack.Kitisa
#preflight 6272b00c2f6d177be3c8d4e7
[CL 20044215 by daniel coelho in ue5-main branch]
Event Track and ConsoleVariable Track are disabled. Spawn Track is also disabled, which means you can't create spawnables in Valkyrie
Added FIsTrackClassAllowed to MovieScene which is bound in MovieSceneToolsModule to look at the class viewer rules.
Fix logic in MediaTrackEditor and LiveLinkPropertyTrackEditor which was always returning Supported for level sequences.
#preflight 6270563191629533ec2b6f79
#rb andrew.rodham
#ROBOMERGE-OWNER: max.chen
#ROBOMERGE-AUTHOR: max.chen
#ROBOMERGE-SOURCE: CL 20031346 via CL 20033139 via CL 20033318 via CL 20033325
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
[CL 20035188 by max chen in ue5-main branch]
- FBlueprintContextTracker::GetScriptStack is deprecated
- FBlueprintContextTracker::GetCurrentScriptStack() now returns a TArrayView so that the view of the stack remains const
- FBlueprintContextTracker::GetCurrentScriptStackWritable() added for uses that explicitly need writable access to the stack
- FBlueprintCoreDelegates::ThrowScriptException now needs a non-const FFrame to be able to set the abort flag
#rb matt.breindel julien.marchand phil.pizlo phillip.kavan
#preflight 626c710d2c01a675267ebcab
#ROBOMERGE-AUTHOR: michael.nicolella
#ROBOMERGE-SOURCE: CL 19992064 via CL 19992251 via CL 19992502 via CL 19992685
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
[CL 19995787 by michael nicolella in ue5-main branch]
Setters and getters are native functions called by FProperties when setting property values with *_InContainer functions.
Setters and getter function names can be manually specified with Setter = Func and Getter = Func keywords inside of UPROEPRTY macro but they will also be automatically parsed if the name is not explicitly specified if the setter or getter function name matches SetPropertyName and GetPropertyName pattern.
The latter behavior can be disabled in UHT's DefaultEngine.ini by setting AutomaticSettersAndGetters=False.
ImportText and ExportTextItem functions have been deprecated and should be replaced with *_InContainer or *_Direct variants.
#rb Steve.Robb
#preflight 6210a377a83e0bcefd03d9e1
#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 19070318 via CL 19098059 via CL 19104650 via CL 19104661 via CL 19110012
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19147839 by marc audy in ue5-main branch]