Commit Graph

40 Commits

Author SHA1 Message Date
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
patrick boutot
fa42c9b609 MVVM: Rework for the view runtime data. The new format allows for better error detection and new features in progress. The view owns the bindings and events. The source has a list of the bindings. That saves runtime of memory, the delegate doesn't store the binding id. All bindings, events, sources are now sorted for better incremental build performance.
Add a different "key" structures to prevent mistakes with indexes.
Unregister the delay bindings when the source is released.
Store the FieldId, in the source itself. That reduces the amount of work when loading the view.
Add option to delay the events initialization (like we do for bindings).
The binding to evaluate "long path" view models are now separated from regular bindings.
#jira UE-194167
#rb editor-ui-systems

[CL 30042205 by patrick boutot in ue5-main branch]
2023-12-01 11:13:35 -05:00
patrick boutot
2ab80be567 MVVM: Big rework of the MVVM view compiler. It add supports for conversion function to go from complex to simple. Supports pin split on simple conversion function. Add ability to to support setter function with more than one argument. Build the list of all the sources.
#jira UE-200602, UE-200602, UE-200602, UE-200602, UE-200602
#rb editor-ui-systems

[CL 29815789 by patrick boutot in ue5-main branch]
2023-11-17 14:09:15 -05:00
bob tellez
f98456e469 [Backout] - CL29797661
[FYI] Patrick.Boutot
Original CL Desc
-----------------------------------------------------------------
MVVM: Big rework of the MVVM view compiler. It add supports for conversion function to go from complex to simple. Supports pin split on simple conversion function. Add ability to to support setter function with more than one argument. Build the list of all the sources.
#jira UE-200602, UE-200602, UE-200602, UE-200602, UE-200602
#rb editor-ui-systems

[CL 29801739 by bob tellez in ue5-main branch]
2023-11-16 23:04:14 -05:00
patrick boutot
c362983f9f MVVM: Big rework of the MVVM view compiler. It add supports for conversion function to go from complex to simple. Supports pin split on simple conversion function. Add ability to to support setter function with more than one argument. Build the list of all the sources.
#jira UE-200602, UE-200602, UE-200602, UE-200602, UE-200602
#rb editor-ui-systems

[CL 29797678 by patrick boutot in ue5-main branch]
2023-11-16 20:11:58 -05:00
patrick boutot
0bb197807d MVVM: Test if a field is allowed base on the path, not only on the field owner. That allow to have a Widget's property allowed on a child widget but not on the base widget.
#rb editor-ui-systems

[CL 29753638 by patrick boutot in ue5-main branch]
2023-11-15 13:51:32 -05:00
patrick boutot
f852893a58 MVVM: Allow a property or a function if it's from the blueprint we are currently compiling.
#jira UE-191812
#rb editor-ui-systems

[CL 28963236 by patrick boutot in ue5-main branch]
2023-10-20 09:15:33 -04:00
christian savoie
2a0659be78 [MVVM] Fix inverted hierarchy check
* Specialized some error messages for more clarity

[REVIEW] [at]editor-ui-systems
#tests Refactored some code so property is returning a derived class but binding is refering to data from base, abstract, class.
#rnx

[CL 28002641 by christian savoie in ue5-main branch]
2023-09-19 13:29:38 -04:00
patrick boutot
579e1254c5 MVVM: Remove cached functions that was affecting GC cluster.
#rb editor-ui-systems

[CL 27452576 by patrick boutot in ue5-main branch]
2023-08-29 12:44:06 -04:00
patrick boutot
30997ca639 MVVM: Reuse the same library when generating the view class. It helps the cook make smaller diff packages when the cook is deterministic.
[REVIEW] editor-ui-systems

[CL 27359733 by patrick boutot in ue5-main branch]
2023-08-24 17:34:17 -04:00
patrick boutot
42657bf51b MVVM: Fix conversion function allow test when the graph is a wrapper.
[CL 26870847 by patrick boutot in ue5-main branch]
2023-08-05 11:50:12 -04:00
patrick boutot
d955ead9f4 MVVM: Fix bad format syntax.
#rnx
#rb trivial

[CL 26769442 by patrick boutot in ue5-main branch]
2023-08-02 09:11:30 -04:00
patrick boutot
b8b7b1e074 MVVM: Add option to generate conversion graph when compiling and not saved in the packages.
Useful when graph cannot be saved.
#jira UE-130879

[CL 26614927 by patrick boutot in ue5-main branch]
2023-07-26 14:04:59 -04:00
patrick boutot
38ce8d67f6 MVVM: Change error message when the field does not exist to include a posible solution to the problem. Test if the field exist on the downcasted struct instead of the previous property owner struct.
#jira UE-189649
#rb vincent.gauthier

[CL 26470072 by patrick boutot in ue5-main branch]
2023-07-19 16:38:38 -04:00
patrick boutot
96ed2dbc61 MVVM: Save the MemberReference with self context. That allow the path to be used in the skeletal compilation phase.
#rb editor-ui-systems

[CL 26053542 by patrick boutot in ue5-main branch]
2023-06-16 11:26:16 -04:00
patrick boutot
aa10b2b6b9 MVVM: Add the Auto ExecutionMode. It will decide at compile time if it should run the binding should be run immediately or delayed. A binding will be run in delay mode if the binding can be triggered from more than one field.
#rb vincent.gauthier
#preflight 646e13201b241f07482943d5, 646f3cb2bf15b1ab007a3d10

[CL 25644056 by patrick boutot in ue5-main branch]
2023-05-26 11:58:47 -04:00
patrick boutot
8245b6eba3 MVVM: Update compiler error message when the field is not found. It's probably because it's missing the FieldNotify
#rb none
#preflight 646e6542807b157b8b536a2a

[CL 25635288 by patrick boutot in ue5-main branch]
2023-05-25 19:34:26 -04:00
patrick boutot
07f2ab96d8 MVVM: Fix false positive when detecting duplicated binding. Complex functions do not have a source and it's normal that it reuse the same compiled binding.
#rb none
#preflight none

[CL 25025595 by patrick boutot in ue5-main branch]
2023-04-13 10:55:58 -04:00
patrick boutot
427ba04371 MVVM: Remove needs to have a SourcePath for ComplexConversionFunction. The source data is inside the function itself and the fieldnotify name is already saved in the class binding.
Update GetBindingInfoFromFieldPath to support viewmodel inside another viewmodel. Add unittest for the function.
Add DoesInitializeAtConstruction on the view class. That is to support manual initialization. When the flag is false, the user is responsible for initializing the view.
Add ReevaluateSourceCreator. A source that was discovered at compile time and added to the list of SourceCreator may need to be evaluated if the path contains notify. That function is similar to SetViewModel but finds the new value from the SourceCreator.
Fix issue when a binding destination can't be evaluated at initialization. Since we only reactivate the bindings link to a source in SetViewModel, some bindings were never registered and never executed after the SetViewModel properly set the binding destination.
Update the view class ToString functions with the new flags.
Prevent adding a new binding when the editor data contains a conversion function and a regular function. That may occur when the user started with a regular binding and changed it afterward for a conversion function. We may not want to reset the binding to be non destructive.
#prefligth 6419e837bb1320be412d274d, 641b068aee0aed13479e6ea3

[CL 24750233 by patrick boutot in ue5-main branch]
2023-03-22 13:07:37 -04:00
patrick boutot
f643a8ba09 MVVM: Temporary remove the error warning until we fix some assets.
[CL 24679072 by patrick boutot in ue5-main branch]
2023-03-16 16:49:30 -04:00
patrick boutot
0f5123a168 MVVM: Add option to log all bindings after compilations. Complete the ToString library from CompiledBindings. Expose the LogMVVM to other MVVM modules. In the view, properly report error in the message log.
#jira UE-178313
#preflight 64130274bd6894c43518c04e
#rb daren.cheng

[CL 24673818 by patrick boutot in ue5-main branch]
2023-03-16 13:02:33 -04:00
patrick boutot
fb31ea2d89 MVVM: Test if the properties or functions are allowed at compile time.
#jira UE-164316
#preflight 63eaf47eb91ae11c1cf4ded7, 63ece0c9514832b242a0f66b

[CL 24289488 by patrick boutot in ue5-main branch]
2023-02-17 15:28:46 -05:00
patrick boutot
583f54b65e Revert properties or functions compile time test introdued with CL 24208984
[CL 24251749 by patrick boutot in ue5-main branch]
2023-02-16 01:58:19 -05:00
patrick boutot
82df764154 MVVM: Test if the properties or functions are allowed at compile time.
#jira UE-164316
#preflight 63eaf47eb91ae11c1cf4ded7, 63ece0c9514832b242a0f66b

[CL 24251528 by patrick boutot in ue5-main branch]
2023-02-16 01:48:06 -05:00
patrick boutot
50aed20739 Revert properties or functions compile time test introdued with CL 24208984
[CL 24215611 by patrick boutot in ue5-main branch]
2023-02-14 13:03:02 -05:00