Commit Graph

3221 Commits

Author SHA1 Message Date
jamie dale
e067188f44 Added support for replacing the internal objects pointed to by an object-based element handle
This currently requires that either the old or new elements have no external references, as redirecting two elements with external references will require support for redirection within the element framework itself

#jira UE-107415
#rb Brooke.Hubert, Chris.Gagnon
#rnx

#ROBOMERGE-SOURCE: CL 15371192 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15371240 by jamie dale in ue5-main branch]
2021-02-09 18:10:04 -04:00
brooke hubert
890a5c72c2 Implement Lasso Selection tool (brush based selection) in asset placement mode.
# Also exposed the typed element selection set to the queries API in ITF.
# Implemented a stash/pop selection on the typed element selection set for modes to use.

#Jira UE-107091
#rb jamie.dale chris.gagnon ryan.schmidt

#ROBOMERGE-SOURCE: CL 15359303 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15360406 by brooke hubert in ue5-main branch]
2021-02-08 17:13:32 -04:00
Arne Schober
38ca3ab538 U5 - remove include
[CL 15348269 by Arne Schober in ue5-main branch]
2021-02-05 23:35:53 -04:00
Arne Schober
eda7b32e05 U5 - for some reason the collector tasks don't like to run on the Gamethread
[CL 15348217 by Arne Schober in ue5-main branch]
2021-02-05 23:15:56 -04:00
Arne Schober
166d22b955 U5 - Don't do latency critical work on Backgroundworkers.
[CL 15340612 by Arne Schober in ue5-main branch]
2021-02-05 15:14:46 -04:00
Zousar Shaker
bdfe4fff0f Split the representation in the reflection system of TObjectPtr fields into FObjectPtrProperty (derived from FObjectProperty and already existed since the introduction of wrapped object pointers) and a new FClassPtrProperty (derived from FClassProperty, and newly introduced in this change). As with raw pointers, UHT will generate code for one vs the other depending on whether the inner type is derived from UClass or not. The new reflection type is meant to be functionally equivalent to the existing one, except it changes how the PROPERTY (not the instance of the field on a containing object) is serialized to ensure it includes the MetaClass member as inherited from FClassProperty.
#rb robert.manuszewski

[CL 15317249 by Zousar Shaker in ue5-main branch]
2021-02-04 12:19:38 -04:00
jeanfrancois dube
72f364c778 Add support in FSoftObjectPath to resolve unloaded subobjects through top level object.
#rb ben.zeigler, matt.peters, patrick.enfedaque

#ROBOMERGE-SOURCE: CL 15307418 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15307421 by jeanfrancois dube in ue5-main branch]
2021-02-03 20:19:42 -04:00
Matt Peters
e4625e6f59 AssetRegistry - Change AssetDataGatherer to always use asynchronous background scanning. A tree structure in FAssetDataDiscovery keeps track of what has been scanned, so that ScanPathsSynchronous requests can wait on only what is missing.
#rb Zousar.Shaker, Francis.Hurteau
#rn Minor AssetRegistry

[CL 15306274 by Matt Peters in ue5-main branch]
2021-02-03 19:36:37 -04:00
Zousar Shaker
2e71b57d9e (added missing file from last submit) Fix ObjectHandle test failing after the wrapped object pointer upgrade as there are now more trackable sub-references in the content being loaded during the test, leading to an excess when counting the number of handle reads.
#rb none

[CL 15304219 by Zousar Shaker in ue5-main branch]
2021-02-03 18:50:08 -04:00
Marc Audy
cac1fe0019 Merge UE5/Release-Engine-Staging @ CL# 15299266 to UE5/Main
This represents UE4/Main @ CL# 15277572

[CL 15299962 by Marc Audy in ue5-main branch]
2021-02-03 14:57:28 -04:00
Zousar Shaker
e6622f1e82 Fix ObjectHandle test failing after the wrapped object pointer upgrade as there are now more trackable sub-references in the content being loaded during the test, leading to an excess when counting the number of handle reads.
#rb none

[CL 15289106 by Zousar Shaker in ue5-main branch]
2021-02-02 21:46:17 -04:00
danny couture
7e884ab613 Add a way to be notified when properties are overwritten for reasons that were not trackable before
- PostReinitProperties is called when a subobject has it's properties overwritten a second time during a direct copy from a CDO
  - PostApplyToComponent is called when a component has it's properties overwritten by a user construction script

#rb Francis.Hurteau, Robert.Manuszewski, Steve.Robb

[CL 15280318 by danny couture in ue5-main branch]
2021-02-02 11:13:35 -04:00
Zousar Shaker
55267633ff Remove the ability to implicitly convert or reinterpret-in-place a TSet or TMap of wrapped pointers as raw pointers, and fix-up all code that was depending on this compatibility API. This ability can't be permitted when we enable lazy load (UE_WITH_OBJECT_HANDLE_LATE_RESOLVE is non-zero) because the hash order of a wrapped pointer differs from a raw pointer, this means that reinterpreting a container of one type to a container of another type means the reinterpreted container isn't in hash order which is invalid.
#rb matt.peters
#fyi devin.doucette
#fyi steve.robb

[CL 15273466 by Zousar Shaker in ue5-main branch]
2021-02-01 15:15:23 -04:00
Zousar Shaker
f368fbe954 Fix circular dependency load deferral for wrapped object pointer fields by ensuring they match behavior for standard raw pointers if they are not lazy loaded.
#jira UE-107371
#jira UE-107377
#rb none

[CL 15264722 by Zousar Shaker in ue5-main branch]
2021-01-30 23:02:33 -04:00
Zousar Shaker
a3828a4cf4 Fix compile errors about operator ambiguity when comparing a TObjectPtr and NULL (not nullptr) specifically in MSVC non-conformance mode. The fix introduces an issue where people could now compare TObjectPtr with an arbitrary integer when compiling in non-conformance mode. The alternatives considered:
1) Use safe bool idiom - fails due to ambiguity with implicit cast operator to T*
2) Use constexpr comparison operators with validation that the TYPE_OF_NULL parameter is always zero - can't find a way to accomplish this with function parameters at compile time.

The issue arises only when a type has conversion operator to a bool (explicit or implicit), and removal of that operator just leads to other problems where a TObjectPtr must be resolved before it can be checked against null, which is something that I've tried to avoid in anticipation of lazy load.  If we end up abandoning the idea of null checking a TObjectPtr without resolving it, we can revisit this code and strip out this workaround.

#jira UE-107385
#rb none

[CL 15259425 by Zousar Shaker in ue5-main branch]
2021-01-28 23:01:43 -04:00
JeanFrancois Dube
f958e74863 Don't clear BP references on reinstantiation if the object reference shares an outer with the container, even if they aren't in the same package (in the case of objects with a package override).
#jira UE-104792
#rb patrick.enfedaque

[CL 15237967 by JeanFrancois Dube in ue5-main branch]
2021-01-28 09:49:10 -04:00
Zousar Shaker
3b4c8fc1c5 Automated wrapped object pointer upgrade for Engine + ShooterGame + ShooterGame referenced plugins
#rb none

[CL 15224650 by Zousar Shaker in ue5-main branch]
2021-01-27 17:40:25 -04:00
Zousar Shaker
e03298fa73 Prototype Wrapped Object Pointers (ObjectHandle/ObjectPtr)
Fix another issue of an FArchive that serializes object references without deriving from FArchiveUObject.  This one affects serialization to/from text assets.  Confirmed I can export an asset containing object references to text format when the fields are of wrapped pointer type.  Comparing the resulting output to a text export of the same asset when the fields are raw pointers show no diffs aside from Guid and Localization which are shown to vary from export-to-export or editor session to editor session.

NOTE: Unlike lazy/soft/weak pointers, I want serialization of wrapped pointers to match serialization of raw pointers, so I don't create a separate indexed array for it in the text output, it goes into the same "Objects" array as raw object pointers.

#rb devin.doucette
#fyi graeme.thornton

[CL 15201151 by Zousar Shaker in ue5-main branch]
2021-01-26 02:45:51 -04:00
Zousar Shaker
2fc47a2cf0 Prototype Wrapped Object Pointers (ObjectHandle/ObjectPtr)
Address the following serialization issues:

1) Ensure ObjectPtr Property can convert from SoftObjectProperty and anything else that Object Property can convert from by removing its ConvertFromType override.
2) Fix serialization of wrapped pointers through archives that don't derive from FArchiveUObject, but still expect to be able to serialize both raw and wrapped object references (FNetBitWriter, FExportArchive, and FObjectAndNameAsStringProxyArchive).
3) Restore assert in base FArchive serialization of wrapped object pointer which I had erroneously made in CL15130804 now that it is clear that it is not safe to be relying on silently not writing/reading a wrapped object pointer (even if that may be the default behavior for a raw pointer).
4) Bump Niagara custom version guid to avoid issues with incorrectly serialized data in DDC.

#jira UE-106943
#rb devin.doucette
#fyi rob.krajcarski

[CL 15178163 by Zousar Shaker in ue5-main branch]
2021-01-25 11:37:56 -04:00
Zousar Shaker
e13d63a6f8 Prototype Wrapped Object Pointers (ObjectHandle/ObjectPtr)
Fix issue where constructor for FSoftObjectPath was using FObjectHandle variant in unintended cases in configurations with lazy load disabled.  This led to errors when using the "package override" feature.

#jira UE-106944
#rb devin.doucette
#fyi jeanfrancois.dube

[CL 15168014 by Zousar Shaker in ue5-main branch]
2021-01-22 18:27:31 -04:00
Zousar Shaker
7505b21b96 Prototype Wrapped Object Pointers (ObjectHandle/ObjectPtr)
Avoid an assert experienced when wrapped object pointers are used in named values via the StructuredArchive's FArchiveFromStructuredArchive adapter.  This change ensures that the wrapped pointers are serialized directly instead of through the adapter.  The groundwork for avoiding the adapter was already there, but what was missing was the operator necessary to convert from the templated TObjectPtr class to the private non-templated FObjectPtr base class used by serialization.  I suspect this same issue may also be happening for other types like TLazyObjectPtr which don't implement the necessary operator to convert to their private base type used in serialization.

#jira UE-106345
#rb devin.doucette
#fyi johan.torp

[CL 15162153 by Zousar Shaker in ue5-main branch]
2021-01-22 01:27:35 -04:00
Marc Audy
bc88b73a29 Merge Release-Engine-Staging to Main @ CL# 15151250
Represents UE4/Main @ 15133763

[CL 15158774 by Marc Audy in ue5-main branch]
2021-01-21 16:22:06 -04:00
Devin Doucette
daeebb2c6a Fixed string usage issues found by UE_NODISCARD
#rb Matt.Peters
#rnx

[CL 15158191 by Devin Doucette in ue5-main branch]
2021-01-21 15:34:44 -04:00
Per Larsson
68ef26c161 Extract package store interface from I/O store package loader
#rb PJ.Kack, CarlMagnus.Nordin
#jira none

[CL 15146443 by Per Larsson in ue5-main branch]
2021-01-20 14:04:27 -04:00
Zousar Shaker
1fc345b9cc Fixed naming of previously modified WrapperFF variable used in unit tests to WrapperFE. Also found second instance of the same FF pattern used for object references and changed it to FE.
#rb trivial
#fyi robert.manuszewski

[CL 15138045 by Zousar Shaker in ue5-main branch]
2021-01-19 14:51:32 -04:00