Change summary:
- Removed SSubobjectBlueprintEditor::FOnNewSubobjectAdded typedef and OnNewSubobjectAdded delegate members. Deprecation was not needed as these were added after the 5.0 release.
- Restored SSubobjectBlueprintEditor::AddNewSubobject() back to its original implementation (prior to adding the now-defunct OnNewSubobjectAdded event).
- Added USubobjectDataSubsystem::OnNewSubobjectAdded() to allow potential listeners to register for and receive successful subobject "add" event notifications.
- Modified USubobjectDataSubsystem::AddNewSubobject() to broadcast new subobject data to any registered listener(s) after a successful add.
- Added FBlueprintEditor::DeferredNamespaceImports to stack auto-imports for events that can be triggered more than once within a single frame.
- Modified FBlueprintEditor::OnComponentAddedToBlueprint() to handle subobject add events that target editor Blueprint objects. Also fixed to query the subobject class for its default import set instead of the subobject itself.
- Modified the FBlueprintEditor dtor to unregister the OnBlueprintUnloaded() event handler as I noticed this was not previously being done (benign as the shared ptr was skipped for being invalid, but this now removes us from the broadcast chain).
- Fixed up minor formatting inconsistencies in some legacy FBlueprintEditor analytics-related code paths.
#jira UE-148495
#rb Ben.Hoffman
#preflight 63078bf937470da4bf38fcf2
[CL 21688272 by phillip kavan in ue5-main branch]
Fix asserts as a result of replacing actor components without going through proper register/unregister lifecycle
Move logic for component class changing out of the details customization and in to the subobject data subsystem
#jira UE-114303
#preflight 621a7ca51d1c5017996c2a01
#rb ben.hoffman
#lockdown julien.marchand
#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 19179312 in //UE5/Release-5.0/... via CL 19180540
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19204194 by marc audy in ue5-main branch]
This is needed because when the user drags a new scene component over the existing one, the old one should be deleted but is still marked as the SceneRoot (and cannot be deleted because we have to update the instances of the archetypes)
#jira UE-119151
#rb trivial
#rnx
#preflight 60edf5d0ef22fa000176acdf
[CL 16843507 by ben hoffman in ue5-main branch]
Correctly sort non-scene components to the bottom of the component tree.
This is some logic that was missed during the SCS editor refactor and is known to work already.
#jira UE-115776
#rb trivial
#rnx
#preflight 60a40b42292e32000148e10b
[CL 16374996 by ben hoffman in ue5-main branch]
The SubobjectDataSubsystem is how users can manipulate a given object within Blueprints or Python scripting. Given a Uobject instance in a level or a UBlueprint asset, you can use GatherSubobjectData to get get an array of handles that you can use to manipulate that subobject.
This is what the new SubobjectEditor (Previously the SCS editor) will be using instead of having all its logic within slate code.
#rb marc.audy
#jira UE-64131
#preflight 6082ce4f8de3a60001cf6af8
#preflight 6082d84a92d7e700019f53e0
[CL 16104548 by ben hoffman in ue5-main branch]