Commit Graph

1263 Commits

Author SHA1 Message Date
yoan stamant
938f456b05 Moved UserDefinedStruct to CoreUObject
#jira UE-216472
#rb Devin.Doucette

[CL 34495793 by yoan stamant in ue5-main branch]
2024-06-19 08:00:57 -04:00
gary yuan
f85b2347ba [Backout] - CL34482589
[FYI] Yoan.StAmant
Original CL Desc
-----------------------------------------------------------------
Moved UserDefinedStruct to CoreUObject
#jira UE-216472
#rb Devin.Doucette

[CL 34486763 by gary yuan in ue5-main branch]
2024-06-18 20:05:51 -04:00
yoan stamant
b9344fb62e Moved UserDefinedStruct to CoreUObject
#jira UE-216472
#rb Devin.Doucette

[CL 34482607 by yoan stamant in ue5-main branch]
2024-06-18 17:57:11 -04:00
kevin macaulayvacher
276d09f6df Remove all simple usage of REN_ForceNoResetLoaders from the codebase since the flag has been deprecated and currently does nothing. Simple in this case is direct use of the flag with no conditional logic. More complex uses were removed in another change.
#rnx
#rb Francis.Hurteau

[CL 34424068 by kevin macaulayvacher in ue5-main branch]
2024-06-17 11:55:02 -04:00
george rolfe
943919f37c [UMG] Provided a better description for "bCanCallInitializedWithoutPlayerContext"
#jira UE-217987

[CL 34392549 by george rolfe in ue5-main branch]
2024-06-14 21:59:15 -04:00
kevin macaulayvacher
bc36ef6880 Remove usage of REN_ForceNoResetLoaders from the codebase since the flag has been deprecated. These removals all pertain to conditional use of the flag which usually ends up cleaning up the code a bit more than only removing the flag.
#rnx
#rb Francis.Hurteau

[CL 34375991 by kevin macaulayvacher in ue5-main branch]
2024-06-14 13:04:06 -04:00
zahra nikbakht
1cba503479 UMG: Check the drag-drop extensions to see if a widget accepts drop when moving widgets in the designer.
#jira UE-215900
#rb daren.cheng

[CL 34324947 by zahra nikbakht in ue5-main branch]
2024-06-12 17:53:53 -04:00
kevin macaulayvacher
357c98fb83 - UObject::Rename will always remove a mismatching linker unless explicitly told not to via a new rename flag REN_AllowPackageLinkerMismatch. This is meant to be distinct from the deprecated REN_ForceNoResetLoaders as the intent is inverted: There are few reasons to not want to reset loaders when there is a mismatch between package and linker, and when there is no mismatch, we do not want Rename to implicitly resetloaders (we no longer do as of 33136565). The only use case where mismatched linkers is desired is when objects are _temporarily_ renamed to belong to a staging package and desire to have the object continue loading when the object is moved back to the matching linker package (commonly done during blueprint reinstancing). In such a case, the new flag acknowledging the intentional mismatch is meant to be used.
- Any code causing a linker mismatch needs to explicitly clear loading flags for their object to avoid asserting. This is to make the intention clear that rename will make loading correctly impossible when moving the object to a different linker unintentionally. So either clear the loading flags of the object (i.e. finish loading via load calls such as ConditionalPostLoad) or forcibly allow mismatching via the new flag.

- When marking an export as invalid in FLinkerLoad::InvalidateExport() we now also clear loading flags since it is wasteful to load invalid objects.

- Exports marked as invalid are no longer reset to be valid when the linker is reset for the object instance. This is to prevent reloading invalid objects when re-using a linker already resident in memory if a subsequent package load is requested.

- When UStruct upgrades UFields to FFields, the UStruct objects are marked as invalid to prevent reloading the objects unnecessarily

- Fixes an issue where since Rename can clear the linker for mismatched types, any calls to FLinkerLoad::InvalidateExport needs to be moved before the rename operation to be effective.

- CollectUnreachableObjects will no longer mark unreachable objects as invalid in the linkerloader. That code would mark objects as invalid until the linker is destroyed which incorrectly assumed would happen soon. If however a load for the same package occurs before the linker is destroyed, the in-memory linker would be re-used keeping the marked exports as invalid so those exports would not be loaded (even though they should have been).

#jira UE-212466 UE-214849
#rb Francis.Hurteau, Michael.Galetzka
[RN] UObject::Rename will always remove the renamed object's linker if the rename moves the object into a different package. As a result, any renames occuring while an object is loading will now assert instead of leading to hard to diagnose crashes long after the Rename call has completed. If renaming to a different package is intentional and the linker should not be cleared, the new flag REN_AllowPackageLinkerMismatch can be used to prevent clearing linkers on the object even though the linker is for a different package than the package has been renamed to be part of.

[CL 34304935 by kevin macaulayvacher in ue5-main branch]
2024-06-12 08:47:36 -04:00
david bromberg
c31d702845 Sequencer- Resubmission of changelist 34065553 that had been backed out for a versioning issue which is now fixed. Original description below:
Sequencer- Dynamic Binding Refactor
Refactor the 'Dynamic Binding' blueprint system to be Custom Bindings rather than tied directly to FMovieScenePossessable and FMovieSceneSpawnable. As part of this:
? Created UMovieSceneReplaceableDirectorBlueprintBinding and UMovieSceneSpawnableDirectorBlueprintBinding to replace the Possessable and Spawnable versions of DynamicBindings
? Deprecated the DynamicBinding references on possessable and spawnable and created Postload fixup code to automatically create custom bindings instead
? Note that because the previous Dynamic Bindings operated as overrides and the new ones don't, there is a no longer supported path which is using Possessables as a preview in editor for Possessable Dynamic Bindings. Now if you don't mark 'Call in Editor' for a Replaceable Director Blueprint binding, you'll need to define a spawnable preview binding for the binding in order to work with it in Sequencer.
? Since UMG also used Dynamic Bindings on possessables, temporarily add DynamicBinding as a member variable on FWidgetAnimationBinding and create postload logic to move DynamicBindings to live on there for WidgetAnimations.
? USD has custom code to create dynamic bindings automatically for its use case. Convert this also to use the new custom binding system.
? Some cleanup on object binding right-click menus was done as part of this.
? Some further MovieSceneSequence API deprecation and refactoring has been done for the creation of bindings to add SharedPlaybackState where possible which was necessary for dynamic binding setup.

FMovieSceneSpawnable deprecation in Level Sequences
Since I was having to write postload fixup logic for FMovieSceneSpawnables with Dynamic Bindings that converted these to FMovieScenePossessables with custom bindings, it felt like a good chance to deprecate all FMovieSceneSpawnable use in Level Sequences.

I chose at this time not to deprecate FMovieSceneSpawnable use for non-Level-Sequence Movie Scene Sequences. This includes Day Sequences, Template Sequences, Actor Sequences, Widget Animations, Niagara Sequences, and some Meta Human sequences. I made this choice because to do so would require also refactoring those sequence types to use MovieSceneBindingReferences in order to enable custom bindings for those sequence types. This will be a future refactor.

Some notes on this deprecation.
? I kept MovieScene specific code that references or creates FMovieSceneSpawnables due to not refactoring all MovieSceneSequences
? Binding creation code in tools such as Sequencer will check for the presence of Binding References and create custom bindings if present, otherwise will still create FMovieSceneSpawnables
? AvaSequences required some extra work to make this change, including some changes and bugfixes to copy/pasting bindings to move away from custom avalanche copy/paste code, as the copy/paste code for custom bindings is a bit intricate and I didn't want to duplicate it.
? Chaos Cache has been moved away from using an object spawner and instead uses a custom spawnable actor binding inheriting from the regular spawnable actor binding.
? Actor and Take Recording has been updated to support custom spawnable bindings
? Meta Human specific code has been updated to support custom spawnable bindings when using Level Sequences
? FortniteMainBranchObjectVersion has been bumped

Crash fix
As part of the USD work, I found a crash bug where the Binding Properties menu would hold a reference to a level sequence. In the case of USD, the outer of the sequences can be the level, and this caused issues when switching levels. To fix this I ended up needing to add some events when menus are being dismissed so I could clean up these references.

#jira UE-209839, UE-209548, UE-213115, UE-214195, UE-214443
#rb Marc.Audy
#lockdown Marc.Audy
[FYI] juan.portillo, Viktar.Mikhalchuk, Darrien.Blanchard, patrick.boutot

[CL 34127005 by david bromberg in ue5-main branch]
2024-06-05 11:54:07 -04:00
graham lewis
136ba6d02b Disable drag and dropping children into panel hierarchy when it has an MVVM extension.
IDragDropExtension:
- Extension class providing CanDropOnTarget and GetDropFailureText functions.

FDragDropExtensibilityManager:
- Maintains a list of IDragDropExtensions.

IHasDragDropExtensibility:
- Extension class providing GetDragDropExtensibilityManager function.

IUMGEditorModule:
- Inherits IHasDragDropExtensibility.

FUMGEditorModule:
- Creates FDragDropExtensibilityManager instance on startup.

FDragDropExtension:
- MVVM IDragDropExtension implementation. CanDropOnTarget returns false if the target widget has a UMVVMBlueprintViewExtension_PanelWidget extension.

FModelViewViewModelEditorModule:
- Adds FDragDropExtension on startup and removes on shutdown.

FWidgetBlueprintEditorUtils:
- Added CanDropOnTargetExtensions function which iterates current IDragDropExtensions (via UMG module's FDragDropExtensibilityManager).

ProcessHierarchyDragDrop:
- Checks FWidgetBlueprintEditorUtils::CanDropOnTargetExtensions.

#jira UE-215900
[REVIEW] [at]zahra.nikbakht, [at]editor-ui-systems, [at]chris.gagnon
#rb zahra.nikbakht

[CL 34123034 by graham lewis in ue5-main branch]
2024-06-05 09:45:23 -04:00
bob tellez
b7caf3f58d [Backout] - CL34065553
[FYI] david.bromberg
Original CL Desc
-----------------------------------------------------------------
Sequencer- Dynamic Binding Refactor
Refactor the 'Dynamic Binding' blueprint system to be Custom Bindings rather than tied directly to FMovieScenePossessable and FMovieSceneSpawnable. As part of this:
? Created UMovieSceneReplaceableDirectorBlueprintBinding and UMovieSceneSpawnableDirectorBlueprintBinding to replace the Possessable and Spawnable versions of DynamicBindings
? Deprecated the DynamicBinding references on possessable and spawnable and created Postload fixup code to automatically create custom bindings instead
? Note that because the previous Dynamic Bindings operated as overrides and the new ones don't, there is a no longer supported path which is using Possessables as a preview in editor for Possessable Dynamic Bindings. Now if you don't mark 'Call in Editor' for a Replaceable Director Blueprint binding, you'll need to define a spawnable preview binding for the binding in order to work with it in Sequencer.
? Since UMG also used Dynamic Bindings on possessables, temporarily add DynamicBinding as a member variable on FWidgetAnimationBinding and create postload logic to move DynamicBindings to live on there for WidgetAnimations.
? USD has custom code to create dynamic bindings automatically for its use case. Convert this also to use the new custom binding system.
? Some cleanup on object binding right-click menus was done as part of this.
? Some further MovieSceneSequence API deprecation and refactoring has been done for the creation of bindings to add SharedPlaybackState where possible which was necessary for dynamic binding setup.

FMovieSceneSpawnable deprecation in Level Sequences
Since I was having to write postload fixup logic for FMovieSceneSpawnables with Dynamic Bindings that converted these to FMovieScenePossessables with custom bindings, it felt like a good chance to deprecate all FMovieSceneSpawnable use in Level Sequences.

I chose at this time not to deprecate FMovieSceneSpawnable use for non-Level-Sequence Movie Scene Sequences. This includes Day Sequences, Template Sequences, Actor Sequences, Widget Animations, Niagara Sequences, and some Meta Human sequences. I made this choice because to do so would require also refactoring those sequence types to use MovieSceneBindingReferences in order to enable custom bindings for those sequence types. This will be a future refactor.

Some notes on this deprecation.
? I kept MovieScene specific code that references or creates FMovieSceneSpawnables due to not refactoring all MovieSceneSequences
? Binding creation code in tools such as Sequencer will check for the presence of Binding References and create custom bindings if present, otherwise will still create FMovieSceneSpawnables
? AvaSequences required some extra work to make this change, including some changes and bugfixes to copy/pasting bindings to move away from custom avalanche copy/paste code, as the copy/paste code for custom bindings is a bit intricate and I didn't want to duplicate it.
? Chaos Cache has been moved away from using an object spawner and instead uses a custom spawnable actor binding inheriting from the regular spawnable actor binding.
? Actor and Take Recording has been updated to support custom spawnable bindings
? Meta Human specific code has been updated to support custom spawnable bindings when using Level Sequences
? FortniteMainBranchObjectVersion has been bumped

Crash fix
As part of the USD work, I found a crash bug where the Binding Properties menu would hold a reference to a level sequence. In the case of USD, the outer of the sequences can be the level, and this caused issues when switching levels. To fix this I ended up needing to add some events when menus are being dismissed so I could clean up these references.

#jira UE-209839, UE-209548, UE-213115, UE-214195, UE-214443
#rb daniel.coelho, Max.Chen
[FYI] juan.portillo, Viktar.Mikhalchuk, Darrien.Blanchard, patrick.boutot

[CL 34080904 by bob tellez in ue5-main branch]
2024-06-03 19:14:21 -04:00
david bromberg
15d874ead6 Sequencer- Dynamic Binding Refactor
Refactor the 'Dynamic Binding' blueprint system to be Custom Bindings rather than tied directly to FMovieScenePossessable and FMovieSceneSpawnable. As part of this:
? Created UMovieSceneReplaceableDirectorBlueprintBinding and UMovieSceneSpawnableDirectorBlueprintBinding to replace the Possessable and Spawnable versions of DynamicBindings
? Deprecated the DynamicBinding references on possessable and spawnable and created Postload fixup code to automatically create custom bindings instead
? Note that because the previous Dynamic Bindings operated as overrides and the new ones don't, there is a no longer supported path which is using Possessables as a preview in editor for Possessable Dynamic Bindings. Now if you don't mark 'Call in Editor' for a Replaceable Director Blueprint binding, you'll need to define a spawnable preview binding for the binding in order to work with it in Sequencer.
? Since UMG also used Dynamic Bindings on possessables, temporarily add DynamicBinding as a member variable on FWidgetAnimationBinding and create postload logic to move DynamicBindings to live on there for WidgetAnimations.
? USD has custom code to create dynamic bindings automatically for its use case. Convert this also to use the new custom binding system.
? Some cleanup on object binding right-click menus was done as part of this.
? Some further MovieSceneSequence API deprecation and refactoring has been done for the creation of bindings to add SharedPlaybackState where possible which was necessary for dynamic binding setup.

FMovieSceneSpawnable deprecation in Level Sequences
Since I was having to write postload fixup logic for FMovieSceneSpawnables with Dynamic Bindings that converted these to FMovieScenePossessables with custom bindings, it felt like a good chance to deprecate all FMovieSceneSpawnable use in Level Sequences.

I chose at this time not to deprecate FMovieSceneSpawnable use for non-Level-Sequence Movie Scene Sequences. This includes Day Sequences, Template Sequences, Actor Sequences, Widget Animations, Niagara Sequences, and some Meta Human sequences. I made this choice because to do so would require also refactoring those sequence types to use MovieSceneBindingReferences in order to enable custom bindings for those sequence types. This will be a future refactor.

Some notes on this deprecation.
? I kept MovieScene specific code that references or creates FMovieSceneSpawnables due to not refactoring all MovieSceneSequences
? Binding creation code in tools such as Sequencer will check for the presence of Binding References and create custom bindings if present, otherwise will still create FMovieSceneSpawnables
? AvaSequences required some extra work to make this change, including some changes and bugfixes to copy/pasting bindings to move away from custom avalanche copy/paste code, as the copy/paste code for custom bindings is a bit intricate and I didn't want to duplicate it.
? Chaos Cache has been moved away from using an object spawner and instead uses a custom spawnable actor binding inheriting from the regular spawnable actor binding.
? Actor and Take Recording has been updated to support custom spawnable bindings
? Meta Human specific code has been updated to support custom spawnable bindings when using Level Sequences
? FortniteMainBranchObjectVersion has been bumped

Crash fix
As part of the USD work, I found a crash bug where the Binding Properties menu would hold a reference to a level sequence. In the case of USD, the outer of the sequences can be the level, and this caused issues when switching levels. To fix this I ended up needing to add some events when menus are being dismissed so I could clean up these references.

#jira UE-209839, UE-209548, UE-213115, UE-214195, UE-214443
#rb daniel.coelho, Max.Chen
[FYI] juan.portillo, Viktar.Mikhalchuk, Darrien.Blanchard, patrick.boutot

[CL 34065565 by david bromberg in ue5-main branch]
2024-06-03 10:27:49 -04:00
daren cheng
508004197a Expose ViewportScaleUI to view uniform
#rb jason.hoerner, zahra.nikbakht
#tests PIE, material & UMG editor,

[CL 34016852 by daren cheng in ue5-main branch]
2024-05-30 18:44:15 -04:00
devin doucette
118ab112d0 Deprecated GetSerializeContext and SetSerializeContext on FArchive
Implementations have been effectively using the thread context and these changes make that the only available context.

#rb kevin.macaulayvacher

[CL 34011179 by devin doucette in ue5-main branch]
2024-05-30 16:02:03 -04:00
graham lewis
0bb81eb6b1 Disable adding children to panel hierarchy when it has an MVVM extension.
IClipboardExtension:
- Added virtual CanWidgetAcceptPaste function.

FClipboardExtension:
- Overrides CanWidgetAcceptPaste. Checks if specified widget has any UMVVMBlueprintViewExtensions.

FWidgetBlueprintEditorUtils:
- Added static CanPasteWidgetsExtension function. Checks CanWidgetAcceptPaste on all IClipboardExtensions.

FWidgetBlueprintEditor:
- CanPasteWidgets now also calls FWidgetBlueprintEditorUtils::CanPasteWidgetsExtension.

#jira UE-215900
[REVIEW] [at]zahra.nikbakht, [at]editor-ui-systems, [at]chris.gagnon
#rb Patrick.Boutot, zahra.nikbakht

[CL 34008039 by graham lewis in ue5-main branch]
2024-05-30 14:13:13 -04:00
daren cheng
0bff66c69f Disable slate postbuffers when launching multi-PIE
#rb daren.cheng
#tests PIE, Multi-PIE
[FYI] editor-ui-systems

[CL 33588617 by daren cheng in ue5-main branch]
2024-05-10 17:27:21 -04:00
robert millar
ccbf59717b Reimplement text filtering in the content browser to be performed asynchronously in parallel.
- FFrontendFilter_Text is deprecated in favor of FAssetTextFilter.
- FAssetTextFilter can be compiled and then the compiled filter cloned for use in parallel.
- Change FFrontendFilter_CustomText to work by merging its query with FAssetTextFilter instead.
- Deprecate UTextFilter*Handler classes and replace with an explicitly registered interface for thread safety.
Refactor item storage in SAssetView:
- FAssetViewItemCollection stores items and handles threading/updates
- Items are stored linearly in an array with an external lookup for simpler filter progress handling
- FHashTable used for lookup can be built & deduplicated in parallel
Other changes and optimizations
- Move AssetViewTypes.h header to private directory as it was had no DLL exported members anyway.
- When SAsset view receives a new backend filter, check if it's different before requesting a full refresh.

#rb aditya.ravichandran, Julien.StJean

[CL 33396639 by robert millar in ue5-main branch]
2024-05-02 10:54:03 -04:00
patrick boutot
a2b5613488 Slate: Deprecate SListView::ItemHeight and STreeViewItemHeight. ItemHeight and ItemWidth are only used when the panel is is as a tile or both value are assigned. With TreeView and ListView, you can't assigned both. The function are protected, a subclass of those could but it's up to them to expose the ItemHeight and ItemWidth. This behavior changed was introduced with CL 7634094.
#jira UE-210415
#rb editor-ui-systems

[CL 33370360 by patrick boutot in ue5-main branch]
2024-05-01 08:05:39 -04:00
zahra nikbakht
554dd859e1 WidgetBlueprintEditor: Re-add CL 32906781 that allows for using AddExternalObjects in the details panel of widgets.
#jira UE-213182
#rb Patrick.Boutot

[CL 33304655 by zahra nikbakht in ue5-main branch]
2024-04-29 12:39:29 -04:00
steve robb
20e93ad90b Fixed potentially uninitialized variables.
#jira UE-87511

[CL 33146357 by steve robb in ue5-main branch]
2024-04-22 14:54:14 -04:00
zahra nikbakht
cb2a943bcb MVVM: Extension improvements:
Support undo/redo
Support copy/paste
Add setting for supported widget types
#rb patrick.boutot

[CL 33102960 by zahra nikbakht in ue5-main branch]
2024-04-19 10:53:00 -04:00
graham lewis
361033496b Backout CL 32321567.
#rnx
[REVIEW] [at]patrick.boutot, [at]chris.gagnon

[CL 33099858 by graham lewis in ue5-main branch]
2024-04-19 08:13:12 -04:00
zahra nikbakht
9d86501f03 WidgetBlueprintEditor: Fix warning for using weak pointer without checking for null first.
[CL 32917161 by zahra nikbakht in ue5-main branch]
2024-04-11 20:00:30 -04:00
zahra nikbakht
6b21aaa88d UMG: make widget details panel compatible with AddExternalObjects.
#rb Patrick.Boutot

[CL 32907084 by zahra nikbakht in ue5-main branch]
2024-04-11 17:09:41 -04:00
dan nottingham
3c90a5df12 [UMG] Fix some WeakObjectPtr derefs that were lacking null checks.
#rb daren.cheng

[CL 32654988 by dan nottingham in ue5-main branch]
2024-04-01 19:12:54 -04:00