Commit Graph

3068 Commits

Author SHA1 Message Date
carlmagnus nordin
b80a5b3461 AsyncLoading2: Disable check that all RF_Public objects have the LoadImport flag set, RF_Public can be added later to objects without export hashes that can never be imported
#rnx
#rb pk.kack
#jira UE-140062
#preflight none

#ROBOMERGE-AUTHOR: carlmagnus.nordin
#ROBOMERGE-SOURCE: CL 18720743 via CL 18721623 via CL 18721633 via CL 18721637 via CL 18724689 via CL 18725155
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18725167 by carlmagnus nordin in ue5-main branch]
2022-01-25 13:06:14 -05:00
paul chipchase
4faa718790 Saving a package containing virtualized payloads will no longer force the package to 'rehydrate' and download the payloads to store locally.
#rb PJ.Kack
#jira UE-136131
#rnx
#preflight 61eacb3d445cebac10c3d046

- A cvar named "Serialization.RehydrateOnSave" now controls if we rehydrate a package on save, defaulting to false.
-- At the very least we will need to be able to turn this to true to run any "rehydrate the project" UAT command in the future.
- The package trailer no longer stores a valid compressed size for a payload. In the best case scenario we only know the compressed size of the payload when it was still stored on locally on disk. Each virtualization backend is free to take the payload and recompress it anyway it sees fit etc.
- When duplicate payloads entries are added to a FPackageTrailerBuilder we now keep the original payload entry and discard the duplicate rather than replacing the existing entry with the duplicate, which was the original intent.

#ROBOMERGE-AUTHOR: paul.chipchase
#ROBOMERGE-SOURCE: CL 18721599 in //UE5/Release-5.0/... via CL 18721602 via CL 18721661
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18721674 by paul chipchase in ue5-main branch]
2022-01-25 08:05:16 -05:00
aurel cordonnier
ea933b41c4 Merge Dev-EngineMerge [at] 18718262 to FN/Main
this represents UE5/Release-5.0 [at] 18319674
#preflight none

#ROBOMERGE-OWNER: aurel.cordonnier
#ROBOMERGE-AUTHOR: aurel.cordonnier
#ROBOMERGE-SOURCE: CL 18719526 via CL 18719984 via CL 18719985 via CL 18720536 via CL 18720568
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18720577 by aurel cordonnier in ue5-main branch]
2022-01-25 03:06:40 -05:00
marc audy
6553e6cd0a Remove as much C++ deprecation as possible up to 4.17 (along with a few scattered removals from beyond)
#preflight 61eefc77ba69a4fdb220bf23

#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 18712765 in //UE5/Release-5.0/... via CL 18712784 via CL 18713147
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18713191 by marc audy in ue5-main branch]
2022-01-24 15:07:48 -05:00
max chen
d932764970 Core: Nullptr check for ReferencingProperty in log
#jira UE-139856
#preflight 61eafa7ac557ec200187a626
#rb Robert.Manuszewski

#ROBOMERGE-AUTHOR: max.chen
#ROBOMERGE-SOURCE: CL 18710798 via CL 18710804 via CL 18710820 via CL 18711289 via CL 18711438
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18711489 by max chen in ue5-main branch]
2022-01-24 13:25:58 -05:00
vincent gauthier
8b51660453 Localization: Resolving conflicting Ids in LOC macros
#jira UE-136397
#rb none
#preflight 61eebe505e0414e6ec1e5a19

#ROBOMERGE-AUTHOR: vincent.gauthier
#ROBOMERGE-SOURCE: CL 18708506 in //UE5/Release-5.0/... via CL 18708530 via CL 18708683
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18708694 by vincent gauthier in ue5-main branch]
2022-01-24 10:13:12 -05:00
paul chipchase
de8990dd1b Fix an assert for projects with virtualization and editor domain both enabled
#rb PJ.Kack
#jira UE-140005
#rnx
[FYI] Mark.Lintott
#preflight 61ee5ec4e6107b23a020d0f5

- EditorBulkData payloads that are updated in PostLoad were being added to the package trailer builder for local access when saving the package for the editor domain.
- The package trailer system is not able to support this (although this will change soon) so when this occurs we should force those payloads to the legacy serialization path.
- Cleaned up ::ShouldUseLegacySerialization by factoring out the code that is actually affected by UE_ENABLE_VIRTUALIZATION_TOGGLE is wrapped in it, making things easier to read.

#ROBOMERGE-AUTHOR: paul.chipchase
#ROBOMERGE-SOURCE: CL 18706628 in //UE5/Release-5.0/... via CL 18706631 via CL 18706657
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18706667 by paul chipchase in ue5-main branch]
2022-01-24 05:03:42 -05:00
Steve Robb
622eb5b730 Forward the additional property flags onto the FObjectPropertyBase base class, broken in CL# 18558135.
#fyi robert.manuszewski
#jira UE-139230
#rb devin.doucette
#preflight 61eb41328a06fa8a2b1356fd

[CL 18700506 by Steve Robb in ue5-main branch]
2022-01-21 20:02:38 -05:00
vincent gauthier
64e91b43eb CIS fix Localisation: Fix to LOC macros that need to be on a single line for parsing to work
#jira UE-136397
#rb none
#preflight none

#ROBOMERGE-AUTHOR: vincent.gauthier
#ROBOMERGE-SOURCE: CL 18696734 in //UE5/Release-5.0/... via CL 18696776 via CL 18696802
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18696844 by vincent gauthier in ue5-main branch]
2022-01-21 16:35:58 -05:00
paul chipchase
77c12cf814 Virtualized bulkdata is now know as EditorBulkData
#rb PJ.Kack
#rnx
#jira UE-139708
#preflight 61eaaedfc92021e535b6d1e0

- The goal is to show a clear separation between the bulkdata object and the virtualization system.
- NOTE that all of these classes were added during 5.0 development so we are just renaming and moving them, no deprecation paths.
- Renamed FVirtualizedUntypedBulkData to FEditorBulkData
-- Also removed the derived templated types, they were never actually used
- Renamed FVirtualizedBulkDataReader to FEditorBulkDataReader
- Renamed FVirtualizedBulkDataWriter to FEditorBulkDataWriter
- Moved the renamed classes to the UE::Serialization namespace from UE::Virtualization
- Renamed the files of the renamed classes where required.
- Replaced use of LogVirtualization with LogSerialization.
- Renamed defines prefixed with VBD_* to UE_ and make sure they are undefed by the end of the cpp
- Edited unit tests to show up under "System.CoreUObject.Serialization.EditorBulkData.*"

#ROBOMERGE-AUTHOR: paul.chipchase
#ROBOMERGE-SOURCE: CL 18688778 in //UE5/Release-5.0/... via CL 18688787 via CL 18688810
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18688823 by paul chipchase in ue5-main branch]
2022-01-21 09:18:53 -05:00
matt peters
c728a62762 #jira UE-139613
Add diagnostic logs when FilenameToLongPackageName fails. Update InternalFilenameToLongPackageName to also try comparing absolute paths.
#rb Josh.Adams
#rnx
#preflight 61e9b2ae963d324152f73877

#ROBOMERGE-AUTHOR: matt.peters
#ROBOMERGE-SOURCE: CL 18679510 in //UE5/Release-5.0/... via CL 18679543 via CL 18679580
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v902-18672795)

[CL 18680756 by matt peters in ue5-main branch]
2022-01-20 16:00:35 -05:00
pj kack
6063ad5739 Delete the deprecated feature to disable EventDrivenLoader cooking.
Deprecate IsEventDrivenLoaderEnabledInCookedBuilds() function and always return true.
Delete s.DisableEDLDeprecationWarnings option and NOEDL command line argument.
Keep IsEventDrivenLoaderEnabled() but let it return true for FPlatformProperties::RequiresCookedData().
Delete UseSeperateBulkDataFiles option and always write bulkdata to different files/segments when cooking.

#jira none
#rb francis.hurteau,paul.chipchase,matt.peters
#rnx
#preflight 61e90fc8c32d25dadc27fb0c

#ROBOMERGE-AUTHOR: pj.kack
#ROBOMERGE-SOURCE: CL 18672462 in //UE5/Release-5.0/... via CL 18672465 via CL 18672467
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v901-18665521)

[CL 18672468 by pj kack in ue5-main branch]
2022-01-20 04:00:13 -05:00
marc audy
96064b8d86 Fix deprecation after merge
#preflight

#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 18668118 in //UE5/Release-5.0/... via CL 18668651 via CL 18668756
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v901-18665521)

[CL 18668788 by marc audy in ue5-main branch]
2022-01-19 18:41:46 -05:00
carlmagnus nordin
ac2ae1342c Prevent propagation of the LoaderImport internal flag when duplicating objects
Restore propagation of the RF_Loaded flag when duplicating objects as it no longer has any negative effect on the loader
#rb pj.kack
#rnx
#preflight none

#ROBOMERGE-AUTHOR: carlmagnus.nordin
#ROBOMERGE-SOURCE: CL 18657189 via CL 18664846 via CL 18665679 via CL 18665921 via CL 18667765 via CL 18667809 via CL 18668182
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v901-18665521)

[CL 18668365 by carlmagnus nordin in ue5-main branch]
2022-01-19 18:29:07 -05:00
marc audy
0af59ec276 AsyncLoading2:
Add support for importing uncooked source packages from cooked packages
#rnx
#jira UE-136265, FORT-426538
#rb pj.kack
#preflight 61e6ff6a3778a195debba826

#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: carlmagnus.nordin
#ROBOMERGE-SOURCE: CL 18655480 via CL 18664834 via CL 18665656 via CL 18665916 via CL 18667722 via CL 18667764 via CL 18668174
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v901-18665521)

[CL 18668352 by marc audy in ue5-main branch]
2022-01-19 18:28:42 -05:00
sebastian thomeczek
a0634569e4 Add PackageName.DumpMointPoints, PackageName.RegisterMountPoint and PackageName.UnregisterMountPoint console commands
#rb Matt.Peters
#jira none
#preflight 61e85709e543b8254570de6b

#ROBOMERGE-AUTHOR: sebastian.thomeczek
#ROBOMERGE-SOURCE: CL 18661225 in //UE5/Release-5.0/... via CL 18661265 via CL 18661293
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18661327 by sebastian thomeczek in ue5-main branch]
2022-01-19 13:38:57 -05:00
carlmagnus nordin
07c52b2bb6 Don't mark loaded packages as missing, prevents incorrect skipping of imports after requesting load of an invalid export in a valid package
#rb pj.kack
#preflight 61e7e171f517d721f9944a58

#ROBOMERGE-AUTHOR: carlmagnus.nordin
#ROBOMERGE-SOURCE: CL 18656293 in //UE5/Release-5.0/... via CL 18656296 via CL 18656301
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18656304 by carlmagnus nordin in ue5-main branch]
2022-01-19 05:41:38 -05:00
paul chipchase
62007de5f7 Removed USE_BULKDATA_STREAMING_TOKEN from the bulkdata API
#rb CarlMagnus.Nordin, pj.kack
#rnx
#jira UE-133429
#preflight 61e7c020b875abaf33179ccc

### Token Removal
- Now that we support the IoStore in the editor there is no reason to keep the bulkdata streaming token as both the editor and runtime systems can use the same code paths.
- Existing use of USE_BULKDATA_STREAMING_TOKEN will now give deprecation warnings however code should continue to work as long as STREAMINGTOKEN_PARAM was correctly used.
- ::CreateStreamingToken has been removed from the bulkdata api, but any calls to this should've been wrapped with #if USE_BULKDATA_STREAMING_TOKEN

### API Fixes
- We can remove all code that relied on USE_BULKDATA_STREAMING_TOKEN being == 1
- LANDSCAPE_LOD_STREAMING_USE_TOKEN required USE_BULKDATA_STREAMING_TOKEN to be enabled, so we can now assume that it is always 0 and remove the associated code paths.

#ROBOMERGE-AUTHOR: paul.chipchase
#ROBOMERGE-SOURCE: CL 18656055 in //UE5/Release-5.0/... via CL 18656061 via CL 18656063
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18656065 by paul chipchase in ue5-main branch]
2022-01-19 04:40:14 -05:00
francis hurteau
d2917dac9b Remove necessity of separately clearing the package custom versions array when resetting a package linker
This is in preparation of the deprecation of the usage of public data members in UPackage
ResetLoaders now also empty a package custom versions array when detaching a valid linker from it.

#rb Frank.Fella, PJ.Kack
#jira UE-138957
#preflight 61e71c84b56c33b8ecf46535

#ROBOMERGE-AUTHOR: francis.hurteau
#ROBOMERGE-SOURCE: CL 18646219 in //UE5/Release-5.0/... via CL 18646233 via CL 18646258
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18648154 by francis hurteau in ue5-main branch]
2022-01-18 16:39:06 -05:00
andrew davidson
888ebb9dc0 TVariantStructure - Alternative to TBaseStructure providing access to script structs of LWC variant types.
#jira UE-121795
#preflight 61e70bf17f0c4b5aad6b3b40

#ROBOMERGE-AUTHOR: andrew.davidson
#ROBOMERGE-SOURCE: CL 18644088 in //UE5/Release-5.0/... via CL 18644392 via CL 18644603
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18647777 by andrew davidson in ue5-main branch]
2022-01-18 16:24:11 -05:00
paul chipchase
4b74196a0a Fix for static analysis warning
#rb trivial
#rnx
#preflight 61e6ee517a4131bf358cbfc0

- Simplified the assert checking that the trailer exists by moving inside the code branch that has already checked that the bulkdata object should have a trailer.
- This makes the code easier to read and shows that it is okay to use the Trailer pointer as the assert will have validated it.

#ROBOMERGE-AUTHOR: paul.chipchase
#ROBOMERGE-SOURCE: CL 18641371 in //UE5/Release-5.0/... via CL 18641373 via CL 18641389
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18641396 by paul chipchase in ue5-main branch]
2022-01-18 11:56:26 -05:00
francis hurteau
d262daac13 Added support to Loose File Package Writer to write multiple package output per input
Added similar support to the package store manifest
Zen Store support will be added separately
Added some extra data to linker object resources to be used by the iostore package optimizer to properly support optional package chunks.

Multiple cooking outputs is used to support "optional objects" which are editor data package exports that would be put in separate iostore containers than the normal cooked game content.

#jira UE-129801
#rb Matt.Peters, CarlMagnus.Nordin
#preflight 61e5d3bb873f2ea48f48166c

#ROBOMERGE-AUTHOR: francis.hurteau
#ROBOMERGE-SOURCE: CL 18639742 in //UE5/Release-5.0/... via CL 18639751 via CL 18639758
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18639762 by francis hurteau in ue5-main branch]
2022-01-18 09:56:23 -05:00
paul chipchase
73afc77555 Clean up virtualized bulkdata serialization and allow the package trailer to contain payloads with different access types.
#rb PJ.Kack
#jira UE-139348
#rnx
#preflight 61e6742a3778a195dea02199

### PackageTrailer
- We no longer store the access mode for all payloads in the trailer. Instead each payload entry in the lookup table will store the access mode for that specific payload. This allow us to store many payloads of different access types in the same trailer.
- Note that this format change is currently versioned (going from 0 to 1) and is compatible with older version.
-- To allow this, the << operator has been removed from FLookupTableEntry and replaced with a ::Serialize method that takes the version of the package trailer header as an input so that it can run it's own versioning checks.
- When loading trailers with version 0 we apply the access mode to all non virtualized payload entries in the lookup table to reproduce the single access mode for the entire trailer.
- A FPackageTrailerBuilder can now be created directly from an existing FPackageTrailer that will reference all of the trailers local payloads via the new static method ::CreateReferenceToTrailer
- Removed FPackageTrailer::TrySave as it is no longer used when creating a trailer for the editor domain.
- Renamed FPackageTrailer::LoadPayload to ::LoadLocalPayload to make it clear the type of payload that can be loaded.
-- Someday the package trailer should be able to load payloads of any type.

### VirtualizedBulkData Serialization Changes
- We now record if the bulkdata's payload is stored in a package trailer or not via the 'StoredInPackageTrailer' flag, which makes it easier to identify critical errors in serialization (the trailer is missing for example)
-- Storing this info as a flag is now possible as the design for the trailer has changed and a fully virtualized package will still contain a trailer.
- We now only write out OffsetInFile if the payload is not stored in a FPackageTrailer, if the bulkdata object does use a package trailer via the new flag then we take the offset from the trailer instead.
- We also no longer write out a path when saving a payload as referenced to the editor domain, it is assumed that the trailer will know where the workspace domain data is (namely the owning package path)
-- Due to the 'StoredInPackageTrailer' only being added now, this means that packages already saved with a package trailer will work with this code logic as those packages will have serialized the offsets to disk, but won't have the new flag and so will serialize the offsets when loading until re-saved. (worth noting that nobody should encounter this as the package trailer system is disabled by default)
- The loading code is a lot easier to read now and a lot of the branches have been removed although we still have a few extra checks for older formats that might have been saved during development.
- When loading the only real consideration we have is if the payload is in the trailer or not.
- Future Work:
-- If we are not writing to the trailer then we use the legacy serialization system which appends the bulkdata to the end of the package. This is used in two cases, 1) When the package trailer system is disabled 2) If the payload is updated in postload and we are writing out the package to the editor domain as the package trailer does not support writing out local payloads outside of the workspace domain at the moment. The trailer should handle this itself and not rely on the legacy serialization system so that we can remove it.
-- Note that if a payload is stored by reference, we are not adding it explicitly to the payload trailer and we are relying on the trailer builder already containing the reference information when it is created in SavePackage. We do however run an assert to ensure that the reference does exist in the trailer but it might be worth revisiting this.

### VirtualizedBulkData Misc
- The member 'PackageSegment' is now initialized in the constructor to EPackageSegment::Header.
- Moved ::GetPackagePathFromOwner from being a method to a utility function as it accessed no members.
- Validating the payload for saving during serialization has been moved from ::Serialize to it's own method ::TryPayloadValidationForSaving.

### PackageSubmissionChecks
- Added an error message if we detect referenced payloads in a trailer we are trying to virtualize as this condition should never occur. If we encounter it, we give a user facing error message and fail the submit process. It might be worth demoting this to an assert instead as it is not an error the user is expected to see.

#ROBOMERGE-AUTHOR: paul.chipchase
#ROBOMERGE-SOURCE: CL 18637906 in //UE5/Release-5.0/... via CL 18637926 via CL 18637929
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18637932 by paul chipchase in ue5-main branch]
2022-01-18 05:41:44 -05:00
matt peters
fb786c7e8b #jira UE-138902
Split FPackageName's initialization into two events so that FPackageName::TryConvertFilenameToLongPackageName can be called with limited functionality before pluginmanager and coreobject have been initialized.
#preflight 61e58568006b17a6865ac944
#rb Graeme.Thornton
#rnx

#ROBOMERGE-AUTHOR: matt.peters
#ROBOMERGE-SOURCE: CL 18634271 in //UE5/Release-5.0/... via CL 18634294 via CL 18634301
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18637425 by matt peters in ue5-main branch]
2022-01-18 04:35:15 -05:00
pj kack
f562d9aee2 BulkData: Remove the obsolete option "AllowBulkDataInIoStore" that let games run with package data in iostore and bulkdata in pak.
The default configuration for ue5 is to run with both package data and bulk data in iostore.
The only remaining alternative is to disable iostore completely and run with both package data and bulk data in pak.

#jira none
#rb carlmagnus.nordin, paul.chipchase
#rnx
#preflight 61e53b77873f2ea48f1dcd94

#ROBOMERGE-AUTHOR: pj.kack
#ROBOMERGE-SOURCE: CL 18631455 in //UE5/Release-5.0/... via CL 18631662 via CL 18631683
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18636672 by pj kack in ue5-main branch]
2022-01-17 23:59:21 -05:00