#rb Per.Larsson, Pere.Rifa
#jira UE-222974
- To enable the feature call FBulkData::SetCookedIndex with a FBulkDataCookedIndex set to a value between 1 - 255. Zero is currently reserved as the default/off state and can be quickly accessed via FBulkDataCookedIndex::Default.
-- Note that we might change the default value in the future, the main reason to keep it as zero for now is that it means FChunkId values will remain unchanged for bulkdata files not using the feature.
- When a bulkdata object has a cooked index it will output to a file with that value based on the following format <packagename>.CookedIndex.<extension> so a normal bulkdata payload with a cooked index of 5 would end up writing to <packagename>.005.ubulk.
-- This allows the calling systems to control which bulkdata payloads go to which sub files.
- We currently do not support memory mapped payloads or payloads with the duplicate non optional flags. Support and testing for this will be added later.
- Tested saving/editing/loading packages with bulkdata in the editor (vector fields), build/cook/run normal builds, build/cook/run with feature enabled then running the new code with data produced from non modified code and running non modified exe on data generated with the new code.
### IPackageResourceManager
- Added overloads for most methods that take EPackageSegment that also take a FBulkDataCookedIndex and deprecated the older versions.
- Not all methods have been ported over, just the ones I could test but the rest will need the same treatment at some point.
### FLinkerSave
- Now stores each set of bulkdata, optional bulkdata and memory mapped payloads in separate archives, one per cooked index.
- Added a method ::HasCookedIndexBulkData that returns if any of the normal bulkdata payloads contain a non default cooked index. This is used for some paranoid checks when saving packages to the workspace domain.
[CL 36754477 by paul chipchase in 5.5 branch]
[FYI] danny.couture
Original CL Desc
-----------------------------------------------------------------
[ZenLoader]
- Fix ref counting issue causing use-after-free when ALT is active
#rnx
#rb kevin.macaulayvacher
[CL 36747620 by bob tellez in 5.5 branch]
[FYI] danny.couture
Original CL Desc
-----------------------------------------------------------------
[ZenLoader]
- Fix missing ref counting causing use-after-free when ALT is active
#rb kevin.macaulayvacher
[CL 36430889 by danny couture in 5.5 branch]
- Fix crash when running in cook on the fly mode
- Restore zenloader by default for loose cooked files
#rnx
#jira UE-221752
#rb kevin.macaulayvacher
[CL 36262503 by danny couture in 5.5 branch]
Adding WITH_METADATA support for AsyncLoading2 (ZenStore).
#rb Devin.Doucette, Francis.Hurteau
#tests Cooked Lyra manually and tested. Tested build permutations (editor/game)
[CL 36009705 by fredrik lindh in ue5-main branch]
Remove canskipeditoronlywhencooking; it is no longer necessary because its functionality has been replaced by skiponlyeditoronly.
MPCook was handling PKG_EditorOnly because it could not handle skipeditoronlywhencooking, and the two concepts used the same flag to toggle use of them in SavePackage. By removing canskipeditoronlywhencooking, we can turn that flag on.
#rb Francis.Hurteau
#rnx
[CL 35966555 by matt peters in ue5-main branch]
Also updated some checks in that function to ensure that zero size bulk data is loaded correctly.
This fixes a bug where loading an FBulkData with a zero element count wouldn't update the Size field, so if the same FBulkData had previously been used to load data with a non-zero size, the non-zero value for Size would incorrectly persist after loading the zero size data. I've added a regression test to the existing suite to prove that this case is now handled correctly.
#tests Ran FoundationTests and went through bug repro in editor
#rb paul.chipchase
[CL 35919288 by henry falconer in ue5-main branch]
* Migrate FStaticCustomVersionRegistry::Lock to use FTransactionallySafeRWLock.
* Disable caching of FUnversionedStructSchema when in a closed transaction.
* Ensure that the loader logic of StaticDuplicateObjectEx() is done in the open.
* Allocate PrimitiveSceneIds in the open.
#rb Brandon.Schaefer, michael.nicolella
[CL 35735509 by ben clayton in ue5-main branch]
- Prevents finishing ready for removal from LoadedPackagesToProcess until we are no longer recursively processing the package. If a package has a deferred PostLoad that initiates a syncronous load, we may attempt to remove the same package more than once.
#jira UE-221419
#rb Francis.Hurteau
[FYI] danny.couture
#rnx
[CL 35503807 by kevin macaulayvacher in ue5-main branch]
#rb Steve.Robb
#jira UE-221511
[RN] UStructs above 16.7mb will trip an ensure in the Editor so that they remain compatible with upcoming changes to Max ElementSize. You can disable the ensure with CVar CoreUObject.EnsureAgainstLargeProperties.
[CL 35434186 by jodon karlik in ue5-main branch]
- Add support for loading loose cooked file at runtime
- Make sure zenloader can be the default loader in all case from now on
- Auto-detect separate cooked files in AsyncArchive
#jira UE-211676
#rb Francis.Hurteau
[CL 35420441 by danny couture in ue5-main branch]
- Fix deadlock at boot when a package and CDO have circular dependencies between them
#rnx
#jira UE-220691
#rb kevin.macaulayvacher
[CL 35306311 by danny couture in ue5-main branch]