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]
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]
MovieScene was targeted as its headers were at the top of profiling ShooterGame builds.
Tested with -disableunity and -nopch. Current timings take ShooterGameEditor rebuild from 480s to 440s
#jira none
#rb josh.adams
#preflight 624c97a63661c8f04a191889
[CL 19634779 by christopher waters in ue5-main branch]
- Refactored viewport's current level combobox and added "current data layers" in data layer outliner and "current folder" in world outliner to use this system.
- Can optionally be hidden from viewport using advanced flag in ULevelEditorViewportSettings.
#robomerge FNNC
#rb patrick.enfedaque
#preflight 6227604a7077eb04cf696c33
[CL 19302351 by Richard Malo in ue5-main branch]
This should saves around ~1.5 Mb to ~3 Mb at runtime with ~50000 packages
Added a new core define UE_STRIP_DEPRECATED_PROPERTIES that could be used to wrap deprecated properties and strip them to regain memory when a projects becomes compliant. this can be set in the project target file
Deprecated most public properties from UPackage and created accessors for them
#rb PJ.Kack
#jira UE-138957
#preflight 61f17a6f7266f4e79bd62601
#ROBOMERGE-AUTHOR: francis.hurteau
#ROBOMERGE-SOURCE: CL 18738937 in //UE5/Release-5.0/... via CL 18739524 via CL 18741373
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18742135 by francis hurteau in ue5-main branch]
#ROBOMERGE-AUTHOR: ben.woodhouse
#ROBOMERGE-SOURCE: CL 18728275 via CL 18728290 via CL 18728302 via CL 18729122 via CL 18729287
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18729309 by ben woodhouse in ue5-main branch]
This adds a command to the action menu in Sequencer to snap the selected movie
scene sections to the position in the timeline that matches their source timecode.
This can be used to quickly place sections in the timeline in their correct positions
according to their "TimecodeSource" property. Any section with a default value
for "TimecodeSource" (i.e. at timecode "00:00:00:00") will not be modified.
As part of this change, the existing "Sync Sections using Source Timecode" command
was moved out of Sequencer itself and into the LevelSequenceEditorSubsystem,
since it is closely related to the newly added command. Doing so makes both of these
functions accessible to Blueprint and Python. Note though that this means that both
commands are now only available in the Sequencer actions menu, and not in the
"Edit" context menu when right-clicking on a movie scene section.
Finally, this also fixes an issue in the "Sync Sections using Source Timecode" command
where any trimming at the start of the section was not being accounted for, resulting
in incorrect results when syncing trimmed sections.
#rb max.chen
#preflight 61e8ac4a1000e8c59a8735a5
#ROBOMERGE-AUTHOR: matt.johnson
#ROBOMERGE-SOURCE: CL 18669911 in //UE5/Release-5.0/... via CL 18669933 via CL 18669943
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v901-18665521)
[CL 18669953 by matt johnson in ue5-main branch]
FSequencer::AddActorsToBinding, FSEquencer::ReplaceBindingWithActors, FSequencer::RemoveActorsFromBinding can be removed once PasteObjectBindings is moved to LevelSequenceEditorSubsystem for exposing copy/paste to python/blueprints.
#preflight 61d880e8430de36baa5cc5fe
#rb matt.hoffman
#ROBOMERGE-AUTHOR: max.chen
#ROBOMERGE-SOURCE: CL 18551247 in //UE5/Release-5.0/... via CL 18551256
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18551281 by max chen in ue5-release-engine-test branch]