Commit Graph

264 Commits

Author SHA1 Message Date
daren cheng
7b4e0dd09e Lower log level on multiple bindings. Make message more descriptive.
Add validation to MVVM compiler for async events

#rb Vincent.Gauthier
#tests PIE, standalone, validation
[FYI] alain.lafleur

[CL 35837426 by daren cheng in ue5-main branch]
2024-08-27 16:52:01 -04:00
daren cheng
77ef4d3ffa Add Async MakeBrush & LoadTexture / LoadMaterial Nodes for MVVM
[REVIEW] [at]editor-ui-systems
#rb daren.cheng
[FYI] editor-ui-systems
#tests PIE, cooked, validation

[CL 35836548 by daren cheng in ue5-main branch]
2024-08-27 16:28:59 -04:00
daren cheng
2e95785e75 Add AreSourcesValidForBinding to Async, needed should async finish after binding src / dst become gc'd
#tests PIE, cooked, validation
#rb alain.lafleur
[FYI] Patrick.Boutot

[CL 35836278 by daren cheng in ue5-main branch]
2024-08-27 16:21:50 -04:00
dave jones2
64ae24ec12 Removed extraneous GetSelfPin implementations.
Since GetThenPin was added to UK2Node in 5.x, derived classes don't need to provide their own implementations. These were largely identical to the one in UK2Node. Additionally, overriding non-virtual functions can be error prone if there's an expectation of polymorphic behavior.

#rb dan.oconnor, jodon.karlik
#rnx
[FYI] George.Rolfe

[CL 35782464 by dave jones2 in ue5-main branch]
2024-08-23 16:46:50 -04:00
christian savoie
2a16908813 [MVVM] Change default resolver to use TSoftClassPtr
[FYI] daren.cheng, zahra.nikbakht
#tests Launch editor and look at options in field in settings

[CL 35747633 by christian savoie in ue5-main branch]
2024-08-22 13:43:32 -04:00
christian savoie
9541ac84e5 Remove meta class specifier causing crash in editor
[CL 35660104 by christian savoie in ue5-main branch]
2024-08-20 13:08:57 -04:00
christian savoie
8a3b1c35fc [MVVM] Add ability to set default resolver to select by default in project settings.
* Fixed a mixed up condition
* Cleanup resolver reference when not using it as a creation type.

[REVIEW] [at]editor-ui-systems, [at]jc.authier
#tests Changed creation types. Added a VM that's defaulted to use resolver type.
#rb daren.cheng, jc.authier

[CL 35642642 by christian savoie in ue5-main branch]
2024-08-19 18:26:43 -04:00
zahra nikbakht
b761017d21 MVVM: fix generated functions not being cleared properly on undo.
The temporary array holding the generated graphs should not be affected by undo because it holds data created on the compiler context which is itself not transactional.
#jira UE-211315
#rb daren.cheng

[CL 35582017 by zahra nikbakht in ue5-main branch]
2024-08-15 18:42:31 -04:00
zahra nikbakht
931efd4395 MVVM: fix crash when adding extensions to panel widgets.
#rb alain.lafleur

[CL 35562340 by zahra nikbakht in ue5-main branch]
2024-08-15 10:10:38 -04:00
daren cheng
f256db3ad4 Fix Static Analysis MVVM Async
#tests NonUnity
#rb daren.cheng

[CL 35534246 by daren cheng in ue5-main branch]
2024-08-14 10:52:14 -04:00
daren cheng
b6c830e5f6 Fix incorrect API Exposure MVVM
#tests NonUnity
#rb daren.cheng

[CL 35533675 by daren cheng in ue5-main branch]
2024-08-14 10:34:15 -04:00
zahra nikbakht
ac410ff582 MVVM: disable auto-conversion from SoftObjectPointer to ObjectPointer in conversion function arguments
#rb daren.cheng

[CL 35533495 by zahra nikbakht in ue5-main branch]
2024-08-14 10:28:44 -04:00
daren cheng
9121acc4c1 Add Async Node support to MVVM
Add generated ubergraph / multicast support to MVVM.
Some MVVM conversion function compilation refactoring, param / result structs, duplicate method extraction.

#tests PIE, Standalone, Cooked
#rb dan.oconnor, Patrick.Boutot

[CL 35532573 by daren cheng in ue5-main branch]
2024-08-14 09:59:16 -04:00
daren cheng
016453e06a Add comments related to delegates / events / MVVM
#tests PIE, Standalone, Cooked
#rb daren.cheng

[CL 35384568 by daren cheng in ue5-main branch]
2024-08-07 18:25:51 -04:00
patrick boutot
2e269042c7 MVVM: Add Callback on the WidgetBlueprintGeneratedClass to collect save override. The generated function are transient in editor but save during the cooking process.
#rb Jamie.Dale, Zahra.Nikbakht, Vincent.Gauthier

[CL 35115660 by patrick boutot in ue5-main branch]
2024-07-26 14:43:34 -04:00
andrew rodham
927c5d41b3 Sequencer: Added time-warp capabilities to sequences, sub-sections and skeletal animation sections
This is a large suite of changes that are being submitted in bulk for build-health reasons:

Core machinery:
 - FMovieSceneNumericVariant: This is the base variant type that represents either a double, or a custom object. It is not much use on its own, but provides the basis for the time-warp variant, and will be the basis for parameterization.
 - FMovieSceneTimeWarpVariant: This is a drop in replacement for a double PlayRate/TimeScale UProperty that can now represent a time-warp or play rate curve, a loop, a clamp, or a fixed time. It also provides functionality for remapping time, and inverse remapping time.
 - The following interpolation types have been added/improved to add Derivative and Integral functionality
   * FConstantValue: Represents a curve of the form y=c
   * FLinearInterpolation: Represents a curve of the form y=mx + c
   * FQuadraticInterpolation: Represents a curve of the form y=ax^2 + bx + c.
   * FCubicInterpolation: Represents a curve of the form y=ax^3 + bx^2 + cx + d.
   * FQuarticInterpolation: Represents a curve of the form y=ax^4 + bx^3 + cx^2 + dx + e. Does not support integration.
   * FCubicBezierInterpolation now has an AsCubic method that converts it to a cubic polynomial form, which also allows derivative/integral functionality.
 - FPiecewiseCurve(Model): A generic read-only piecewise curve implementation and curve editor model. Used to display derivative curves for playrate.
 - FMovieSceneTimingParameters: A struct for specifying section timing that simplifies computation of a transform. I wanted to replace all implementations with this but current deprecation mechanisms were prohibitively restrictive. More work will be needed there to remove legacy code.
 - FMovieSceneTimeWarpChannel: A new channel type that defines time in one of two domains: PlayRate or Time

Curve Editor: Added the ability to specify custom axes and child curves
- Custom Axes:
  * Custom axes can now be assigned to each curve within a view, and the axis defines the scaling for that curve.
  * This allows us to have multiple different 'spaces' on the same view that have vastly different scales (for instance, play rate, and tick resolution times)
- Child Curves:
  * Child curves are added whenever their parent is added. This allows us to show the derivative of a play rate curve on the curve editor.

Sequencer: Added Owning Object and key offsets to channel meta-data and curve models, made Sequencer key-editors polymorphic,
- New options on channel proxy entries allow us to specify that a channel's keys are relative to their section start time via a key offset
- New options in the curve editor models allow for a non-UMovieSceneSection owner object type

#jira UE-149871
#rb Ludovic.Chabant, David.Bromberg, Max.Chen

[CL 34813298 by andrew rodham in ue5-main branch]
2024-07-15 10:52:09 -04:00
patrick boutot
56488c7325 MVVM: Add an event when a conversion function setting changes. The event is used to rebuild the library.
#rb zahra.nikbakht

[CL 34638925 by patrick boutot in ue5-main branch]
2024-06-25 08:55:46 -04:00
yoan stamant
e6d36d7569 Remove references to deprecated plugin StructUtils (now part of CoreUObject)
#jira UE-216472
#rb devin.doucette

#changelist validated

[CL 34514179 by yoan stamant in ue5-main branch]
2024-06-19 17:04:50 -04:00
yoan stamant
f92989fb33 Fixed include paths following StructUtils being moved to CoreUObject
#jira UE-216472
#rb devin.doucette

[CL 34513428 by yoan stamant in ue5-main branch]
2024-06-19 16:42:16 -04:00
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
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
patrick boutot
b74db8a2a5 MVVM: Deprecate bAllowConversionFunctionGeneratedGraphInEditor. The conversion function graph will be recreated everytime the asset is loaded to be in sync with the saved data.
#rb yohann.dossantos

[CL 34208671 by patrick boutot in ue5-main branch]
2024-06-07 13:56:38 -04:00