Commit Graph

4093 Commits

Author SHA1 Message Date
christopher waters
e750d0b6e5 Adding support for configuring an array property to be empty.
If an array property has elements defines in a Base config and an editor wants to configure the property to be empty in a Default config, nothing was being written.
The first problem was that only object properties with values are written to config files. In this case, we can use the !Property=ClearValue.
The second problem was handling this !Property case inside the config writing code. The code that detects array properties had to be adjusted to detect a !Property entry and check if the property is also empty in the config hierarchy.

#jira none
#rb josh.adams
#preflight 6283f22c25234f88c5e4418b

[CL 20250559 by christopher waters in ue5-main branch]
2022-05-17 16:48:43 -04:00
paul chipchase
f85fad88ff It is now possible to disable virtualization for all payloads owned by a specific asset type by adding the name of the asset to [Core.ContentVirtualization]DisabledAsset string array in the engine ini file.
#rb Per.Larsson
#rnx
#jira UE-151377
#preflight 628364050039ea57a52d6989

### Virtualization
- [Core.ContentVirtualization] in the engine ini file now supports an array called 'DisabledAsset' which can be used to name asset types that should not virtualize their payloads.
-- By default (in BaseEngine.ini) we have disabled the StaticMesh asset as we know it will crash if a payload is missing and the SoundWave asset as it still is pending testing.
- This new way to disable virtualization is data driven. The older hard coded method has not been removed but will likely be reworked in a future submit.
- Now when an editor bulkdata is adding it's payload to the package trailer builder during package save it will poll the virtualization system with a call to the new method ::IsDisabledForObject by passing in it's owner.
-- If the owner is valid and was present in the 'DisabledAsset' array then the method will return true and the EPayloadFlags::DisableVirtualization flag will be applied.

### Package Trailer
- The pre-existing functionality of enum EPayloadFilter has been moved to a new enum EPayloadStorageType as will only filter payloads based on their storage type.
- EPayloadFilter has been modified to filter payloads based on functionality although at the moment the only thing it can filter for is to return payloads that can be virtualized, it is left for future expansion.
- EPayloadFlags has been reduced to a uint16 with the remaining 2bytes being turned into a new member EPayloadFilterReason.
- This new member allows us to record the exact reason why a payload is excluded from virtualization. If it is zero then the payload can virtualize, otherwise it will contain one or more reasons as to why it is being excluded. For this reason the enum is a bitfield.
- Added overloads of ::GetPayloads and ::GetNumPayloads that take EPayloadFilter rather than a EPayloadStorageType
- Added wrappers around all AccessMode types for FLookupTableEntry.
- FPackageTrailerBuilder has been extended to take a EPayloadFilterReason so that the caller can already provide a reason why the payload cannot be virtualized.
-- As a future peace of work this will probably be changed and we will ask the caller to pass in the owner UObject pointer instead and then we will process the filtering when building the package trailer to a) keep all of the filtering code in one place b) keep the filtering consistent

### PackageSubmissionChecks
- The virtualization process in  will now request the payloads that can be virtualized from the package trailer, which respects the new payload flag, rather than requesting all locally stored payloads.

### UObjects
- There is no need for the SoundWave or MeshDescription classes to opt out of virtualization on construction. This will be done when the package is saved and is now data driven rather than being hardcoded.

### DumpPackagePayloadInfo
- The command has been updated to also display the filter reasons applied to each payload

[CL 20240971 by paul chipchase in ue5-main branch]
2022-05-17 07:54:28 -04:00
Andrew Davidson
9741042a2b Reduce use of UE_DECLARE_LWC_TYPE macro to improve Intellisense.
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]
2022-05-17 07:05:35 -04:00
Matt Peters
2eca89a984 UClass: Move the UClass pointers to the cppclass's AddReferencedObject function onto a new type FUObjectCppClassStaticFunctions that allows us to easily add new static functions that are reflected in the same way.
Move the existing DeclareCustomVersions function which was declared as a virtual UObject function into a static UObject function using this method.

#rb Steve.Robb
#rnx
#preflight 62827303046b81bf93c15ef2

[CL 20226876 by Matt Peters in ue5-main branch]
2022-05-16 13:00:04 -04:00
josh adams
f067112ddd - Undoing recent optionalcontent workaround as it didn't fix the issue as thought
#rb trivial
[FYI] carlmagnus.nordin
#preflight skip

#ROBOMERGE-AUTHOR: josh.adams
#ROBOMERGE-SOURCE: CL 20197149 via CL 20200887 via CL 20200894 via CL 20200905
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20201793 by josh adams in ue5-main branch]
2022-05-14 17:33:32 -04:00
josh adams
48f2a001f8 - Waorkaround to allow an optional object pointing to a non-optional in the same package (I think it's okay to allow this, but not sure - it will only affect -editoroptional mode, so should be okay for now)
#preflight 627eb6b1ca3b90fc14f64cfb
#rb none
[FYI] CarlMagnus.Nordin

#ROBOMERGE-AUTHOR: josh.adams
#ROBOMERGE-SOURCE: CL 20192860 via CL 20193241 via CL 20193251 via CL 20193253
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20193489 by josh adams in ue5-main branch]
2022-05-14 00:10:02 -04:00
andy sonnenburg
ff4861eacf Rename AreEqual to AreIdentical in dynamic value representation.
#preflight 627e9fac6d7654cc68b34001

#ROBOMERGE-AUTHOR: andy.sonnenburg
#ROBOMERGE-SOURCE: CL 20187151 via CL 20187642 via CL 20188658 via CL 20188732 via CL 20188761
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20191586 by andy sonnenburg in ue5-main branch]
2022-05-13 18:56:58 -04:00
Matt Peters
d2b81774ba Array Iterator: Add RemoveCurrentSwap.
Give RingBuffer its own iterator class since RemoveCurrentSwap does not fit the usual usage of a ringbuffer, which is supposed to maintain order.
#rb Steve.Robb
#rnx
#preflight 627e62587c26e247734d31d3

[CL 20180808 by Matt Peters in ue5-main branch]
2022-05-13 10:10:49 -04:00
Matt Peters
1a35919403 SavePackage: Fix fatal error when cooking a Blueprint package with a class that has a subobject that is excluded from the targetplatform.
#preflight 627cf880a82f3adab877df2b

[CL 20163317 by Matt Peters in ue5-main branch]
2022-05-12 08:15:04 -04:00
Matt Peters
7032a26f23 SavePackage: Add IsCachedCookedPlatformDataLoaded calls; it is required by the contract of BeginCacheForCookedPlatformData. Add a Timeout result to return to the cookerto wait if any IsCachedCookedPlatformDataLoaded calls are incomplete.
#rb Francis.Hurteau
#rnx
#preflight 627c2ef47535c51f4c93b510

[CL 20151503 by Matt Peters in ue5-main branch]
2022-05-11 18:03:33 -04:00
Tim Smith
851a043fc4 GC locks are no longer acquired when GIsInitialLoad is true.
#rb pj.kack
#preflight 627c0342332e182a58be2753

[CL 20146333 by Tim Smith in ue5-main branch]
2022-05-11 14:46:08 -04:00
Marc Audy
b5a786af95 Look in the correct object when determining if the inherited instance should be instantiated
#jira UE-151358
#rb Phillip.Kavan
#preflight 627bfc671e749933439dffa2

[CL 20145787 by Marc Audy in ue5-main branch]
2022-05-11 14:23:48 -04:00
michael nicolella
cd56533446 Adding a thread_local global FFrame* tracking pointer that mimics the ScriptStack in the FBlueprintContextTracker, but remains enabled when DO_BLUEPRINT_GUARD=0
#rb Phillip.Kavan
#preflight 6279dc5b5b16ddee36e88d21

#ROBOMERGE-AUTHOR: michael.nicolella
#ROBOMERGE-SOURCE: CL 20118901 via CL 20120619 via CL 20120654 via CL 20120674
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20121921 by michael nicolella in ue5-main branch]
2022-05-10 09:04:27 -04:00
Matt Peters
d5bea590f1 SavePackage: Fix argument error in log statement - filename is a TCHAR* rather than an FString.
#rb None, trivial
#rnx
#preflight 627972faa35fb5cb3f583c35

[CL 20110424 by Matt Peters in ue5-main branch]
2022-05-09 16:20:20 -04:00
Matt Peters
8c3b950c08 Saving External Objects and AssetRegistry dependencies: mark objects in external packages as used-in-game (not editor-only), so that their imports are marked as used-in-game, and are followed when looking for manage references.
#rb Francis.Hurteau
#rnx
#preflight 62796acd242446ce6c6568f4

[CL 20109801 by Matt Peters in ue5-main branch]
2022-05-09 15:52:12 -04:00
patrick enfedaque
52390aeef1 UPackage::FindAssetInPackage: Prioritize Valid Assets over deleted ones if multiple are found in same package
This fixes replaced actors being considered as the package asset when replacement actor is the better choice. (AActor::PreSaveRoot was being called on wrong actor)

#jira UE-151254
#rb francis.hurteau, jeanfrancois.dube
#preflight 627927af822bdc69f00e3150

#ROBOMERGE-AUTHOR: patrick.enfedaque
#ROBOMERGE-SOURCE: CL 20104013 via CL 20104027 via CL 20104064
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20109729 by patrick enfedaque in ue5-main branch]
2022-05-09 15:47:30 -04:00
robert millar
ef35ae6934 Fix non-unity error in correct file this time.
#rb none

#ROBOMERGE-AUTHOR: robert.millar
#ROBOMERGE-SOURCE: CL 20087400 via CL 20087407 via CL 20087409 via CL 20087411
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20108401 by robert millar in ue5-main branch]
2022-05-09 15:07:33 -04:00
robomerge
0183811784 Fix non-unity error.
#rb none

#ROBOMERGE-AUTHOR: robert.millar
#ROBOMERGE-SOURCE: CL 20086616 via CL 20086621 via CL 20086637 via CL 20086644
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20108337 by robomerge in ue5-main branch]
2022-05-09 15:05:39 -04:00
robert millar
8f7639f498 Add simple command-line options for enabling and disabling pending kill.
#rb none

#ROBOMERGE-AUTHOR: robert.millar
#ROBOMERGE-SOURCE: CL 20085586 via CL 20086176 via CL 20086262 via CL 20086331
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20108320 by robert millar in ue5-main branch]
2022-05-09 15:05:15 -04:00
robert millar
ef3f3a4ef0 Always include referencing property info in HandleGarbageReference since it's guarded by a cvar anyway.
Allow ENABLE_GC_OBJECT_CHECKS to be overriden outside of GarbageCollection.h

#rb none

#ROBOMERGE-AUTHOR: robert.millar
#ROBOMERGE-SOURCE: CL 20085499 via CL 20086136 via CL 20086228 via CL 20086317
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20108298 by robert millar in ue5-main branch]
2022-05-09 15:04:33 -04:00
john barrett
0524c1ec01 Added checks for unsupported nested NetDeltaSerialize structs.
#JIRA UE-131493
#rb Jon.Nabozny, Peter.Engstrom

#ROBOMERGE-AUTHOR: john.barrett
#ROBOMERGE-SOURCE: CL 20078729 via CL 20078740 via CL 20079098 via CL 20079430
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20106407 by john barrett in ue5-main branch]
2022-05-09 13:54:21 -04:00
louisphilippe seguin
521fda3d2d NetConditionGroup feature
* Added new ELifetimeCondition COND_NetGroup, that is only supported on replicated subobjects.
* Any subobject using COND_NetGroup must be part of a netcondition group via the NetConditionGroupManager world subsystem for it to get replicated.
* PlayerControllers can be members of a group via IncludeInNetConditionGroup
* When a netgroup subobject replicates to a connection we will only replicate it if the playercontroller of the connection is a member of atleast one group of that subobject.
* NetGroupOwner and NetGroupReplay are special groups that automatically replicate to the owner's connection or the replay net driver.
* This feature is only available to Actors or Actorcomponents with bReplicateUsingRegisteredSubObjectList = true

#jira UE-132891
#rb Ryan.Gerleve, Mattias.Hornlund, John.Barrett

#ROBOMERGE-AUTHOR: louisphilippe.seguin
#ROBOMERGE-SOURCE: CL 20076279 via CL 20076546 via CL 20076844
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20106219 by louisphilippe seguin in ue5-main branch]
2022-05-09 13:48:08 -04:00
paul chipchase
0a84c135ad Fix a crash when trying to load a package trailer (backwards) from an archive that is smaller than the package footer size
#rb trivial
#rnx
#preflight 6274dcab732d07cf93f5a143

- This is most likely to occur when trying to load a package trailer from a corrupted 0 byte file.
- Currently we load the footer then check that the package tag exists to confirm that the package file is malformed
- We need to check that there is actually room for us to seek backwards to the potential start point of the footer otherwise FArchive code will assert on a negative seek position.

[CL 20073384 by paul chipchase in ue5-main branch]
2022-05-06 04:37:38 -04:00
David Harvey
910086f603 add missing include
#rb trivial
#jira none
#rnx
#preflight 6274db228d32cd80d8d43998

[CL 20073359 by David Harvey in ue5-main branch]
2022-05-06 04:29:17 -04:00
paul chipchase
6cef6bb3c3 Add a utility to load a package trailer directly from an archive
#rb trivial
#rnx
#preflight 6273dd6a5c29fb7661e98c60

[CL 20057584 by paul chipchase in ue5-main branch]
2022-05-05 10:34:32 -04:00