Commit Graph

2071 Commits

Author SHA1 Message Date
JeanFrancois Dube
f0a7eba632 Fix constructing a FSoftObjectPath from a FObjectPtr.
The original code was trying to build the path to the object without resolving it, but that seems impossible with redirectors, etc.

#rb zousar.shaker
#fyi semion.piskarev, ben.zeigler
#preflight 62acb7695d5264997e21fbfc
#rnx

[CL 20706268 by JeanFrancois Dube in ue5-main branch]
2022-06-17 13:41:41 -04:00
paul chipchase
0f1a2be6ba Update FPackageTrailerBuilder to take and store an FString as context for error messages rather than a FName that is assumed to be the package name.
#rb Per.Larsson
#rnx
#preflight 62ab39985c69124c4082aad6

- Ideally the VA tool would not need to deal with this like package mount points (the less project/plugin set up, the faster the tool can run) so we want to move back towards using file paths rather than FPackageNames to reference things where possible. Since virtualization does not need to do anything with the package data itself we can somewhat ignore a lot of Unreal conventions and treat the package files as just files that happen to have a package trailer on the end.
- The package builder was previously storing the name of it's package via an FName and converting it to a string when we needed to print a message. Now we store a generic FString of 'debug context' instead which  can be anything.
- Although it is unlikely that anyone is using the FName overloads externally we need to deprecate them rather than just delete them.

#ROBOMERGE-AUTHOR: paul.chipchase
#ROBOMERGE-SOURCE: CL 20699797 via CL 20699804 via CL 20699806
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v968-20684695)

[CL 20699936 by paul chipchase in ue5-main branch]
2022-06-17 03:18:27 -04:00
evgenii babinets
f3b5e678af Adding an optional (default disabled) CSV stat for tracking total UObject count.
#rb ben.woodhouse

#ROBOMERGE-AUTHOR: evgenii.babinets
#ROBOMERGE-SOURCE: CL 20697269 via CL 20697284 via CL 20697295
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v968-20684695)

[CL 20697993 by evgenii babinets in ue5-main branch]
2022-06-16 20:04:06 -04:00
PJ Kack
72ef632ce7 Use UE_ASSET_LOG in LinkerLoad
#jira UE-156124
#rb matt.peters,carlmagnus.nordin
#rnx
#preflight 62a9d9492a1103ff5fbd8c53

[CL 20682467 by PJ Kack in ue5-main branch]
2022-06-16 02:48:11 -04:00
nate strohmyer
de8cfbc19d Fix to allow users to coerce a BlueprintImplementableEvent with no return value to treat the override as a function rather than an event
#jira UE-153344
#rb phillip.kavan
#preflight 62a8e2800c386ccae4861791
#3078

[CL 20658293 by nate strohmyer in ue5-main branch]
2022-06-14 17:22:51 -04:00
francis hurteau
c4ab31d1c9 Automatic sidecar generation of uncooked objects using an asset type allowlist
#rb CarlMagnus.Nordin, Matt.Peters
#jira UE-156070
#preflight 62a8a600a43e20b29346a5c6

#ROBOMERGE-OWNER: francis.hurteau
#ROBOMERGE-AUTHOR: francis.hurteau
#ROBOMERGE-SOURCE: CL 20652109 via CL 20653917 via CL 20654247 via CL 20654256
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v955-20579017)

[CL 20657591 by francis hurteau in ue5-main branch]
2022-06-14 16:53:07 -04:00
dave jones2
a9e4598363 UE-151338 - Implement refactored implicit conversion for math types.
Adds support for most of the remaining LWC math types (eg: FVector4). Note that FVector2D and FBox2D are currently disabled. Their corresponding double variants have FName collisions with the primary variant names, which needs to be addressed separately.

Some cleanup was also added that reroutes all conversion through a common function, ConvertType. This alleviates the need for separate conversion functions for each type.

#jira UE-151338
#rb andrew.davidson
#preflight 62a3b355f87ec0b3c8a26cf5

[CL 20652370 by dave jones2 in ue5-main branch]
2022-06-14 13:07:48 -04:00
steve robb
fd2a0b1e20 Removal of TEXT literal concatenations, which doesn't work in UTF-8 mode.
#rb devin.doucette
#jira UE-132142
#preflight 62a8748fa76c84377748036b

#ROBOMERGE-OWNER: steve.robb
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 20647443 via CL 20648283 via CL 20648315
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v955-20579017)

[CL 20651786 by steve robb in ue5-main branch]
2022-06-14 12:46:34 -04:00
PJ Kack
b0bc254d82 AsyncLoading 1&2: Refactor initial load to remove zen loader dependency on script object blob in order to support editor loading.
NotifyRegistrationEvent:
Remove all NRP_Started events since they add no value.
Move the NRP_Finished event for type NRT_Class from InitializePrivateStaticClass (Class.cpp) to UObjectLoadAllCompiledInDefaultProperties (UObjectBase.cpp) since this is where the outer registration function for the class is actually executed.
Add a new NRT_NoExportObject event in ConstructUPackage for top level noexport objects like UScriptStruct, UDelegateFunction and USparseDelegateFunction that are just part of the package and has no registration info.

AsyncLoader:
Move EDLBootNotificationManager from AsyncPackageLoader to AsyncLoading.
Add FEarlyRegistrationEventsRecorder to replay early events that occur before the loader is created.

AsyncLoading:
Ignore the new NRT_NoExportObject event.
Allow for objects to skip the NRP_Added and NRP_Started phases.

AsyncLoading2:
Remove LazyInitializeFromLoadPackage and the reading and parsing of the ScriptObjects binary blob.
Remove FindScriptImportObjectFromIndex/GFindExistingScriptImport that was dependent on the ScriptObject blob, instead all script objects are added to the global import store directly from the notification system callbacks.
Change GetUnresolvedCDOs logic to check for imported classes with missing or not-yet-initialized CDOs.
Add FAsyncPackageDesc2::ReferencerRequestId to let each package track its most recent load package request referencer.
Change ProcessPendingCDOs logic to avoid recursive reentrancy and to process the most relevant CDOs first, based on the new ReferencerRequestId.

Tests:
Lyra: Editor, Runtime EDL and Zen loader on Win64 and Console
ShooterGame: Editor, Runtime EDL and Zen loader on Win64 and Console
AncientGame: Editor, Runtime EDL and Zen loader on Win64
Other: Editor, CookedEditor, Runtime EDL and Zen loader on Win64 (client and server)

#jira none
#rb carlmagnus.nordin
#robomerge EngineMerge
#rnx
#preflight 62a84ba7cf54a658eeffc200

[CL 20643384 by PJ Kack in ue5-main branch]
2022-06-14 05:37:32 -04:00
Zousar Shaker
4d894be5dd Make FObjectPtr/TObjectPtr default initialize to nullptr. Also added an ENoInit constructor if a caller wants them to be uninitialized.
#rb devin.doucette
#robomerge EngineMerge
#preflight 62a77c9ed068a796cb6d790a

[CL 20631308 by Zousar Shaker in ue5-main branch]
2022-06-13 14:26:05 -04:00
Steve Robb
b67083a0bd Fix for aggregates being initialized with braced syntax but are no longer aggregates in C++20.
#rb devin.doucette
#jira none
#preflight 62a29b93ff22b2aef9d2d146

[CL 20602862 by Steve Robb in ue5-main branch]
2022-06-10 17:21:34 -04:00
paul chipchase
64e2c2eb9a Trivial casting fix for DynamicallyTypedValue
#rb Andrew.Scheidecker
#rnx
#preflight 62a2e55a6c6cbbd8ca78eb21

- MinAlignmentLogTwo is being stored as uint8 and the only place in code passing in that parameter does so as a uint8 so we can just change the parameter data type to match.

[CL 20590701 by paul chipchase in ue5-main branch]
2022-06-10 02:51:18 -04:00
Steve Robb
3ba7d2f992 bool-to-integer property conversions added.
#rb marc.audy
#jira none
#preflight 629fee828803713041e21190

[CL 20585845 by Steve Robb in ue5-main branch]
2022-06-09 18:09:32 -04:00
robert manuszewski
f0b07af40a Fixing deprecation warnings about deprecated DEPRECATED_MACRO macro
#jira UE-156257
#rb trivial
#preflight none

#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 20582103 via CL 20582509
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v955-20579017)

[CL 20585507 by robert manuszewski in ue5-main branch]
2022-06-09 17:58:29 -04:00
robert manuszewski
686f9e5455 Changing CppStructOps registration code use struct path names instead of short names to allow identically named native structs to be registered
#rb Andrew.Scheidecker
#preflight 62a1c7beff06c1c98cc3701a

#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 20580224 via CL 20580249 via CL 20581193 via CL 20581751
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v955-20579017)

[CL 20585128 by robert manuszewski in ue5-main branch]
2022-06-09 17:24:44 -04:00
Patrick Laflamme
fc9ffb74cd Marked the FAssetData::AssetClass, FARFilter::ClassNames and FARFilter::RecursiveClassesExeclusionSet as 'Deprecated Property'.
- Print a deprecated warning message for Python users trying to access the property.

#rb Robert.Manuszewski
#preflight 62a247b4175f47cec96d8406

[CL 20583445 by Patrick Laflamme in ue5-main branch]
2022-06-09 15:44:41 -04:00
Robert Manuszewski
ad58603f66 Fixing up short type names in property meta data
#jira none
#preflight none
#rb trivial

[CL 20572294 by Robert Manuszewski in ue5-main branch]
2022-06-09 03:11:27 -04:00
dave jones2
bcadd23489 UE-151338 - Implement refactored implicit conversion for math types.
Removed container and struct conversions from the script VM. This introduced complexity that the VM doesn't need, nor did it scale for the various struct types that we want to implicitly convert in Blueprints. Instead, the script VM is *only* aware of float<->double conversion. Container and struct conversions have now been moved to BlueprintTypeConversions. Currently, only the existing FVector3f<->FVector3d conversion has been added, but the remaining LWC types will be added in a subsequent change.

During Blueprint compilation of container and struct conversions, we now inject a function call into the bytecode that performs the conversion, which is better suited to the task instead of burdening the VM with the work. One drawback to this technique is that containers are slightly more inefficient when it comes to conversions. They won't know their type(s) ahead of time, which requires dynamically looking up a conversion function at runtime. We can possibly optimize this further, but the generaly recommendation is to avoid implicit conversions of container types when possible.

Additionally, a couple of convenience functions were added to the KismetCastingUtils to help remove a fair amount of boilerplate code that was used for implicit casting in various node types. ScriptCastingUtils.h was also removed since the VM no longer needs to concern itself with complex conversions.

#jira UE-151338
#preflight 629a507fb42820769428c133
#rb phillip.kavan

[CL 20560449 by dave jones2 in ue5-main branch]
2022-06-08 13:50:57 -04:00
phillip kavan
14110558a0 Deprecate ARFilter struct make/break nodes in Blueprint graphs to preserve backwards compatibility after removal of short package name support.
#rb Zach.Rammell
[FYI] Lauren.Barnes, Bryce.Lumpkin
#preflight 629fb95be9383fd88fcccc82

#ROBOMERGE-OWNER: phillip.kavan
#ROBOMERGE-AUTHOR: phillip.kavan
#ROBOMERGE-SOURCE: CL 20555954 via CL 20555961 via CL 20556102 via CL 20556357 via CL 20556365
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v954-20466795)

[CL 20559661 by phillip kavan in ue5-main branch]
2022-06-08 13:23:27 -04:00
paul chipchase
d802d4d4b2 EditorBulkdata now longer stores a EPackageSegment member since it is always set to EPackageSegment::Header
#rb Per.Larsson
#rnx
#preflight 629f530958032863438a0b30

- Storing the segment type as a member made the code would imply to the reader that it could be changed, even though in all paths it was being set to  EPackageSegment::Header. Removing the member and just hard coding the segment use should make the code easier to follow.
- Editor bulkdata always stores it's payload in the package trailer, which for now counts as the package header.
- The only deviation for this is the experimental feature that allows us to store the payloads in a sidecar file. This code path is not currently supported, but has been updated to use hardcoded EPackageSegment::PayloadSidecar.
- Given that PackageSegment was always set to EPackageSegment::Header we can easily remove any assert of if statement checking for that.

[CL 20553326 by paul chipchase in ue5-main branch]
2022-06-08 04:15:48 -04:00
Steve Robb
d6dcf39384 C++20 fixes to FOpenPackageResult and FOpenAsyncPackageResult and braced-init.
#jira none
#rb matt.peters
#preflight 629ff4fb5e683df722b6b5dd

[CL 20549296 by Steve Robb in ue5-main branch]
2022-06-07 21:33:05 -04:00
JeanFrancois Dube
39a1ebe4f0 Changelist Validation: added possibility to output warnings and changed reference not latest revision from error to a warning.
#rb richard.malo
#preflight 629e987d58032863432a0237
#rnx

[CL 20535494 by JeanFrancois Dube in ue5-main branch]
2022-06-07 07:24:30 -04:00
Devin Doucette
c154ee9fbc DerivedData: Fixed the namespace of GetTypeHash
#jira UE-155447
#preflight 6298d94f5143e4aacd839eb9
#preflight 6298d9bf0360a10c349c2bf1
#rb none
#rnx

[CL 20471890 by Devin Doucette in ue5-main branch]
2022-06-02 13:14:45 -04:00
Per Larsson
a97300da1f Bulk Data - remove checking the global GEventDrivenLoader and add support for loading from optional packages
#rb CarlMagnus.Nordin
#jira none
#preflight 62986a87a07cbdb4285b3699

[CL 20469669 by Per Larsson in ue5-main branch]
2022-06-02 10:53:10 -04:00
matt peters
82f63fe877 Fix thumbnails not loading in editor until the package is loaded. ThumbnailTools::FindCachedThumbnailInPackage and LoadThumbnailsFromPackage are sometimes called with AssetData.GetFullName, and that function has changed to describe the class as a ClassPath instead of a ShortClassName. But package thumbnails are stored by FullName with class described as a ShortClassName. Change Thumbnail tools to convert input to ShortClassName.
#jira UE-155486
#rb Robert.Manuszewski
#rnx
#preflight 6297d5ab7b033c7273aa2721

#ROBOMERGE-OWNER: matt.peters
#ROBOMERGE-AUTHOR: matt.peters
#ROBOMERGE-COMMAND: _robomerge[bot4] UE5-MAIN
#ROBOMERGE-SOURCE: CL 20459973 via CL 20459983 via CL 20460826 via CL 20461155
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v952-20449836)

[CL 20462645 by matt peters in ue5-main branch]
2022-06-01 19:34:37 -04:00