Skip to content

Fix crash with SequencePlayer by adding engine version check#197

Merged
MothDoctor merged 1 commit intoMothCocoon:5.xfrom
MaksymKapelianovych:fix_levelsequence
Apr 26, 2024
Merged

Fix crash with SequencePlayer by adding engine version check#197
MothDoctor merged 1 commit intoMothCocoon:5.xfrom
MaksymKapelianovych:fix_levelsequence

Conversation

@MaksymKapelianovych
Copy link
Copy Markdown
Contributor

Alternative PR for crash fix mentioned in discord

@MothDoctor MothDoctor self-assigned this Apr 26, 2024
@MothDoctor MothDoctor merged commit 8e2a0a9 into MothCocoon:5.x Apr 26, 2024
@MaksymKapelianovych MaksymKapelianovych deleted the fix_levelsequence branch May 9, 2024 12:16
Settius added a commit to Settius/FlowGraph that referenced this pull request Mar 29, 2026
* Sequence node: bSavePinExecutionState is now True by default

This addressed a common issue with handling SaveGame for a directed graph.

* version set to 1.6

* exposed 2 methods to other C++ classes

* Change the C++ protection level of remaining runtime methods from private to protected

* Update SFlowDiff.cpp (#174)

Fixed crash when doing a diff vs Perforce.
The crash occurred inside of the SetContent method called from SFlowDiff::SetCurrentMode. When the Widget is not set to SNullWidget::NullWidget it assumes that the widget exists and attempts to dereference it, but in the former code the Widget was unset (nullptr) causing the crash.

* clean execution information once Sequence node finished the work

* Non-unity mode build fixes (#178)

* Update SFlowDiff.cpp

Fixed crash when doing a diff vs Perforce.
The crash occurred inside of the SetContent method called from SFlowDiff::SetCurrentMode. When the Widget is not set to SNullWidget::NullWidget it assumes that the widget exists and attempts to dereference it, but in the former code the Widget was unset (nullptr) causing the crash.

* Non-unity mode build fixes

* Exposing match type on NotifyActor node (#175)

* Exposing match type on NotifyActor node

* Adding missing constructor

* Add EFlowNodeDoubleClickTarget::PrimaryAssetOrNodeDefinition to support opening the Asset and falling back to opening the Node Class if the node doesn't have an asset. (#177)

* Add EFlowNodeDoubleClickTarget::PrimaryAssetOrNodeDefinition to support opening the Asset and falling back to opening the Node Class if the node doesn't have an asset.

* Use spaces to align UMETA for EFlowNodeDoubleClickTarget so it aligns with any Tab Size

* Fix incorrect MustImplement paths (#176)

* cosmetic tweaks of pull requests

* Additions, refinement and bugfixes (#180)

* formatting fix

* Fixed rare issue with loading saves - prevent triggering input on not-yet-loaded node

* wording corrected

* extracted graph-related code from the FFlowAssetEditor to new SFlowGraphEditor class

added FFlowAssetEditor::IsTabFocused() to prevent delete/paste/copy nodes if graph tab isn't focused

* fixed graph commands

* #131 fixed updating pin names below removed pin

* quick CIS compilation fix

* another CIS fix attempt

* redundant include removed

* fixed showing static descriptions in PIE/SIE

renamed flag to better reflect its role

* add null flow asset check when calling StartRootFlow (#132)

Co-authored-by: Krzysiek Justyński <krzysiek.justynski@gmail.com>

* Add custom color support to nodes (#135)

* readability tweak

* non-editor compilation fix

* Added includes to fix compiler errors

When compiling for UE 5.1 (Win64) we ran into some compile errors due to missing header includes.

* Added includes to fix compiler errors (#152)

When compiling for UE 5.1 (Win64) we ran into some compile errors due to missing header includes.

* Fixed bug where Owner parameter wasn't being used

Owner was passed into this function, presumably to be used instead of 'this', but it was just using 'this'.

Changed the code to use Owner if specified, and default to 'this' otherwise.

* Fixed bug where Owner parameter wasn't being used  (#153)

* Added includes to fix compiler errors

When compiling for UE 5.1 (Win64) we ran into some compile errors due to missing header includes.

* Fixed bug where Owner parameter wasn't being used

Owner was passed into this function, presumably to be used instead of 'this', but it was just using 'this'.

Changed the code to use Owner if specified, and default to 'this' otherwise.

* comforting convention of separating engine headers from plugin headers

* Extending the "GetAssignedGraphNodeClass()" function to support to return the correc "EdGraphNode" for grand child classes of "UFlowNode" (#151)

Previously it would return the first found "IsChildOf" and return the EdGraphNode of the foundclass.

But lets say we got this situation just for example:
UFlowNode->UMyBaseNode
UFlowNode->UMyBaseNode->UMyQuestNode

Both "UMyBaseNode" and "UMyQuestNode" could be in the list if we want different EdGraphNodes for both of them. If the "UMyQuestNode" goes into the itteration and it would find "UMyBaseNode" first it will be returned without checking the rest, because "UMyQuestNode" is dirived from "UMyBaseNode" (IsChildOf == true) and thus it returns the EdGraphNode of the base node directly. So that would mean I got the wrong EdGraphNode for my special quest node.

This modification continues to try and find parent classes and returns the closest parent version.
So lets say we have this situation:

UFlowNode->UMyBaseNode
UFlowNode->UMyBaseNode->UMyQuestNode->MyOtherQuestNode(BP class)
Both “UMyBaseNode” and “UMyQuestNode” would be found, but the closest parent to “MyOtherQuestNode” would be returned, in this case the EdGraphNode of “UMyQuestNode”

It only does this if we have found 2 or more parents though.
If only 1 is found we would return that one, and if the exact class match is found lets say: "UMyQuestNode" finds "UMyQuestNode" it will return the EdGraphNode right away aswell.

Hopefully this makes sence :P Otherwise feel free to ask.

* Show pretty readable pin name even if friendly name is not provided (#140)

* Show pretty readable pin name even if friendly name is not provided

* Add missing else. Silly mistake 😋

* cosmetic tweaks of last PR

* rework of PR #140

- added bEnforceFriendlyPinNames as separate flag from the Unreal editor config
- moved creating a display name to `UFlowGraphSchema::GetPinDisplayName` without modifying graph node's instance

* CustomInput & Output Details Customization and other cleanup

* Added forward declarations & includes that were needed to compile
* Changed some functions to return const &'s rather than doing a full deep copy of a member container
* Explicitly calling MoveTemp() to use move semantics (supported by UE container classes (eg TArray)) to move the array without an extra copy.  Some compilers might be able to do this optimization automatically, but being explicit here.
* Introduced a superclass to UFlowNode_CustomInput and Output.  The diff is easier if you compare them to the new superclass, since most of the code moved into it.
* The "details" superclass for CustomInput/Output fixes a discovered bug where the list of EventNames was not recaching correctly.
* Moved a bit of code from PlayLevelSequence to FlowNode.h (TryGetRootFlowActorOwner) so that it can be used in other contexts.  Also provided a component version of this same code.
* The FlowGraphSchema will now create default nodes for any CustomInputs that exist when the asset is first created.
* Added a UseAdaptiveNodeTitles option to optionally make CustomInputs integrate their EventName into the title for the node.  This defaults to false (to preserve previous behavior by default).
* Exposed CustomInput Add/Remove functions on UFlowNode to allow subclasses to modify the CustomInputs array.

* Additional includes for compiler errors

* Update FlowAsset.cpp

non-editor configurations compile fix for previous changelist.

* Removing MoveTemp for local variables

According to this guidance, it's no longer a performance improvement.
 https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f48-dont-return-stdmovelocal

* Extended CustomOutputs and other quality of life improvements

- Custom Outputs now can be listened to by the owning component

- Added a DeinitializeInstance() call to FlowNode (called when its FlowAsset instance owner is deinitialized)

- Added Edit Asset Defaults button to Flow Editor

* Code fixes after merge with latest

* Removed these replaced files

* Moves some stuff around

* tweaks

* revert this

* 5.1 backward-compatible markup

Added some markup to support compiling in UE 5.1.

(the flow.uplugin version will need to be locally adjusted to 5.1)

* need the includes too

* Updates from our project

Added accessors, some refactoring of interfaces and a bug fix in CallOwnerFunction

* FlowNodes respect module accessibility boundaries

* Removed redundant includes

* Removed unnecessary deltas

* Reintroduced blank line

* Removed deltas

* Removed extra deltas

* Removed more deltas

---------

Co-authored-by: Krzysiek Justyński <krzysiek.justynski@gmail.com>
Co-authored-by: Bohdon Sayre <bohdon@gmail.com>
Co-authored-by: Satheesh (ryanjon2040) <ryanjon2040@users.noreply.github.com>
Co-authored-by: Alex van Mansom <45290811+Vi-So@users.noreply.github.com>

* Fix Issue #172 - Add Alignment Features to Flow Graph Nodes (#179)

* add context menu for organising nodes

* initial commit for organisation context menu actions

* update menu context to run graph organisation functions

* remove unused header file

* remove unused header file

* remove unused header file

* update sub menu for alignment context menu options

* update context menu to only appear for nodes

* update context menu to align with prior implementation

* update code to align with prior implementations

* exposed SetGuid, GetGuid to blueprints

* Allow optional hot reload for native flow nodes (#182)

* fixes missing indentation in the palette panel for subcategories (#184)

using a custom "RowExpander" Delegate analogous to the way the blueprint graph does it.
  compare it to here: https://github.com/EpicGames/UnrealEngine/blob/072300df18a94f18077ca20a14224b5d99fee872/Engine/Source/Editor/Kismet/Private/SBlueprintSubPalette.cpp#L293C54-L293C74

* Update FlowGraph Reroute Node Selection & Connection Highlighting to be similar to Blueprints. Resolves #171 (#185)

* update input wiring to be similar to blueprints

* on hover node, node now highlights

* resolve merge conflict

* update reroute node selection to be similar to blueprints

* Added `#include UE_INLINE_GENERATED_CPP_BY_NAME` to every possible .cpp

It's a new thing in UE 5.1 and it's meant to "improve compile times because less header parsing is required."

* removed redundant includes

Wrapped editor-only inluces with the `WITH_EDITOR`.
Moved a few includes to .cpp files.
Added forward declaration where needed.

* Quick cosmetic pass on headers, especially a new classes from pull requests

Mostly just updated class layout to this plugin convention.

* Moved definitions of the log channels to separate headers.

* Removed `AFlowWorldSettings::IsValidInstance()` needed in pre-UE5 era

* Fix UFlowNode_SubGraph in cooked builds where Asset member could dereference to nullptr, when trying to get the PathName after converting to UObject*. Just try to get the Path Name from the SoftObjectPtr itself instead. (#186)

Reason: UObjectBaseUtility::GetPathName() has a check with a if (this != NULL) and under clang, in optimized builds, this is assumed to be always true. Depending on how inlining goes, the compiler is free to eliminate if it assumes it will always be true; chcked generated UE 5.2 and UE 5.3 code in disassembly, and the checks for if(this != StopOuter && this != NULL) was outright eliminated during aggressive inlining and was assumed to be true, where in UE 5.2 there were still function calls and it cannot assume stuff can be nullptr or not.

* removed redundant includes

* Some improvements for working with CallOwnerFuntion (#188)

* removed redundant includes

* Some improvements for working with CallOwnerFuntion:
1. Display node description above node (as for triggers, timers etc).
2. Support for context pins (as for PlayLevelSequence). Now if Params type is changed in referenced function or pins inside Params are renamed/added/removed, CallOwnerFuntion node will not be refreshed. Pins will appear only if user changes referenced function to some other function and then returns back, which is not very convenient. After my changes, Refresh action will update node pins as well. Also, deleted some now excessive function to unify logic for pins refreshing.

---------

Co-authored-by: FoolsTheoryDev <krzysiek.justynski@gmail.com>

* plugin compiles against UE 5.4

* fix CIS compilation

* replaced monolithic header

* Fix issue https://github.com/MothCocoon/FlowGraph/issues/187 (#189)

* 1. UFlowNode now also executes OnReconstructionRequested if pin info has been changed inside pin array (PinName, PinFriendlyName, PinToolTip). (#190)

2. Removed OnBlueprintPreCompile() and OnBlueprintCompiled() from UFlowGraphNode, because all possible node reconstructions, handled by these functions, now are triggered from UFlowNode::PostEditChangeProperty()
3. SFlowGraphNode now hides pin name only if there is one valid pin in array, not just Pins.Num() == 1.

* fixed non-unity build on UE older than 5.3

* removed unconditional dirtying asset which might occured on constructing graph editor

* Add RequiredParamsClass validation to prevent crash with UFlowNode_CallOwnerFunction when user change owner class to default and then press Refresh (#191)

* Add graph action to delete node and reconnect pins if possible (#192)

* Improve drawing for reroute nodes that go backwards when they are selected, connection is executing ot executed during PIE. (#194)

* Fix crash with SequencePlayer by adding engine version check (#197)

* fixed compilation in older engine versions

* Flow 2.0

* Flow AddOns (#202)

* Flow AddOns

Introduced FlowAddOns

~ Major rework of the Flow Editor to support AddOns
~ Also added ExecuteComponent flow node, which allows a component of the owning actor (if it implements a specific interface) to be executed via a proxy node in the Flow Graph.  We use this to wrap some legacy systems in flow graph nodes.

* Fix Linux compile errors and regressions on UFUNCTIONS

* Fix bug with ExecuteInput for AddOns

Nodes and AddOns could execute for pins they did not expect, if the AddOns introduced pins that the Node (or other AddOns) were not aware of.

Also, removed some deprecation warnings because they were generating compile warnings, which could cause some projects problems with automated builds.  I changed the deprecation message to a human-readable message only.

* Slight adjustment to IsSupportedInputPinName()

early return if the array is empty

* AddOns

Optimized and changed how Input/Outputs are added from AddOns

* Quality of life improvements

Revised the ForEachAddOn() signature, since it only ever needs to be used when iterating over all AddOns (recursively), as you can use a normal for loop over AddOns for just the AddOns of this object alone.

Also moved some access functions from FlowNode to FlowNodeBase and exposed them to Blueprint, based on a question I saw on the Discord about Get Actor Owner access.

* Extracted Component injection code into Flow base

also updated ExecuteComponent to use it

* Transferring flags from Template component to instance + Transient

* Singular InjectComponent signature

* Small revisions to Execute Component flownode

* Fix uniqueness problem with component lookup

* cosmetic pass on AddOns refactor

- Adding Category to a few functions which fixes build machine compilation in the plugin mode.
- Partially restoring class layout to its original shape, taking in account new sections, and improve it a little bit.
- Reversing some changes on making symbols editor-only which might break non-editor tools working with Flow Graph.
- Static analysis fixes.

* restored changes wiped out by Flow AddOns merge

* cosmetic changes while investigating UE 5.2 compilation errors

After all, decided to drop UE 5.2 support already.

* Added check to prevent crash when deleting two or more node assets (if some of them are in undo history) (#201)

* Change replication to Push Model (#204)

* Moves the Start or Load of the RootFlow to a virtual function. (#208)

This allows projects are finer controll when implementing saving and loading.

* Improvements for FlowGraphDiffing (#210)

* Flow AddOns

Introduced FlowAddOns

~ Major rework of the Flow Editor to support AddOns
~ Also added ExecuteComponent flow node, which allows a component of the owning actor (if it implements a specific interface) to be executed via a proxy node in the Flow Graph.  We use this to wrap some legacy systems in flow graph nodes.

* Fix Linux compile errors and regressions on UFUNCTIONS

* Fix bug with ExecuteInput for AddOns

Nodes and AddOns could execute for pins they did not expect, if the AddOns introduced pins that the Node (or other AddOns) were not aware of.

Also, removed some deprecation warnings because they were generating compile warnings, which could cause some projects problems with automated builds.  I changed the deprecation message to a human-readable message only.

* Slight adjustment to IsSupportedInputPinName()

early return if the array is empty

* AddOns

Optimized and changed how Input/Outputs are added from AddOns

* Quality of life improvements

Revised the ForEachAddOn() signature, since it only ever needs to be used when iterating over all AddOns (recursively), as you can use a normal for loop over AddOns for just the AddOns of this object alone.

Also moved some access functions from FlowNode to FlowNodeBase and exposed them to Blueprint, based on a question I saw on the Discord about Get Actor Owner access.

* Extracted Component injection code into Flow base

also updated ExecuteComponent to use it

* Transferring flags from Template component to instance + Transient

* Singular InjectComponent signature

* Small revisions to Execute Component flownode

* Fix uniqueness problem with component lookup

* fixed GC-related compilation warning in AddReferencedObjects()

* cosmetic pass on AddOns refactor

- Adding Category to a few functions which fixes build machine compilation in the plugin mode.
- Partially restoring class layout to its original shape, taking in account new sections, and improve it a little bit.
- Reversing some changes on making symbols editor-only which might break non-editor tools working with Flow Graph.
- Static analysis fixes.

* Flow Diff improvements

* Added AActor::GetActorClassDefaultComponents() alternative for UE < 5.3

* Folded IFlowNativeExecutableInterface into UFlowNodeBase

* Fix compile error

---------

Co-authored-by: FoolsTheoryDev <krzysiek.justynski@gmail.com>

* removed UE 5.2 compilation attempt as it would require more work

We assume the next Flow release would support last 3 engine versions: UE 5.3, UE 5.4, UE 5.5

* Fix Modify() for SetConfigText (#211)

* fix[PlayLevelSequence Node]: Prevent multiple output pins with same name (#212)

e.g. adding multiple notifies to a sequence named "Pause" would previously add multiple output pins.

* Add a bunch of const keywords to allow usage of LogError/LogWarning/LogNote in const functions without const_cast (#207)

* Add a bunch of const keywords to allow usage of LogError/LogWarning/LogNote in const functions

* Add const to function parameter

* Small fixes and clean up after merge

* Removed unnecessary const_casts and made UFlowGraphNode::LogError const

* Node title text changes (#193)

* Node title text changes:
1. Editing UFlowGraphEditorSettings::bShowNodeClass now immediately updates node titles in graph.
2. Editing UFlowSettings::bUseAdaptiveNodeTitles now immediately updates node titles in graph.
3. UFlowGraphNode::GetTooltipText() now calls UFlowNode::GetNodeToolTip()
4. Refresh graph only once, when node asset is renamed
5. User can now specify node prefixes that will be automatically removed, instead of manually writing custom meta = (DisplayName = ...)

* Small optimization for node titles generation: regenerate title only for changing asset. Regenerate titles for every node only after editing NodePrefixesToRemove array or performing GatherNodes()

* Adapted code for AddOns and fixed some issues after merge

* Added OnDetailsRefreshRequested delegate

It allows developers to refresh the Asset or Node details panel without the need to add a boilerplate to projects.

* Restored SFlowNode pin alignment to pre-FlowAddon settings (#213)

* Add a search functionality that does not rely on engine modifications. (#206)

* feat: Add a search functionality for the FlowGraph plugin that does not rely on engine modifications.

* fix: Add missing header files and remove useless logic.

* feat: Support double clicking to jump and focus on subgraph nodes.

* fix: Fixed the bug that comment nodes in subgraphs cannot be searched.

* Change FlowEditor loading phase to "PreDefault" to fix corrupting FlowAssets when DefaultPawnClass for GameMode is set in C++ (as in Epic's templates) (#221)

* Replaced the monolithic header include (PropertyEditing.h) by the corresponding files (#216)

* fixed compilation against Flow AddOn refactor, fixed copyright notice

* removing monolithic header, follow-up to recent pull request

* static analysis fixes

* Fix compile failure due to default C++ standard below 20 (#223)

* Fix compilation for iOS (#224)

* Add forward declaration of UFlowGraphSchema, otherwise it wont compile on mac (clang)

* Remove wrong backslashes in #include

* Fix Diff menu not using the FlowAsset of the current editor when several flow asset editors are opened (#225)

* Fix short type name warnings (#226)

```
Warning      LogClass                  Property StructProperty UFlowNode_ExecuteComponent::ComponentRef defines MetaData key "MustImplement" which contains short type name "FlowCoreExecutableInterface". Suggested pathname: "/Script/Flow.FlowCoreExecutableInterface". Module:Flow File:Public/Nodes/World/FlowNode_ExecuteComponent.h
Warning      LogClass                  Property StructProperty UFlowNode_ExecuteComponent::ComponentRef defines MetaData key "MustImplement" which contains short type name "FlowExternalExecutableInterface". Suggested pathname: "/Script/Flow.FlowExternalExecutableInterface". Module:Flow File:Public/Nodes/World/FlowNode_ExecuteComponent.h
Warning      LogClass                  Property ObjectProperty UFlowNode_ExecuteComponent::ComponentTemplate defines MetaData key "MustImplement" which contains short type name "FlowCoreExecutableInterface". Suggested pathname: "/Script/Flow.FlowCoreExecutableInterface". Module:Flow File:Public/Nodes/World/FlowNode_ExecuteComponent.h
Warning      LogClass                  Property ObjectProperty UFlowNode_ExecuteComponent::ComponentTemplate defines MetaData key "MustImplement" which contains short type name "FlowExternalExecutableInterface". Suggested pathname: "/Script/Flow.FlowExternalExecutableInterface". Module:Flow File:Public/Nodes/World/FlowNode_ExecuteComponent.h
Warning      LogClass                  Property ClassProperty UFlowNode_ExecuteComponent::ComponentClass defines MetaData key "MustImplement" which contains short type name "FlowCoreExecutableInterface". Suggested pathname: "/Script/Flow.FlowCoreExecutableInterface". Module:Flow File:Public/Nodes/World/FlowNode_ExecuteComponent.h
Warning      LogClass                  Property ClassProperty UFlowNode_ExecuteComponent::ComponentClass defines MetaData key "MustImplement" which contains short type name "FlowExternalExecutableInterface". Suggested pathname: "/Script/Flow.FlowExternalExecutableInterface". Module:Flow File:Public/Nodes/World/FlowNode_ExecuteComponent.h
```

* Make it possible to pass InstanceName to CreateRootFlow. Useful for custom game save/load workflows (#228)

* Update FlowAsset.cpp (#222)

* added nullcheck to the PR

* fixed Discord link

* operation on instanced templated now public

* typo fixed

* replaced class name with ThisClass

* Flow Data Pins feature (#231)

* Flow AddOns

Introduced FlowAddOns

~ Major rework of the Flow Editor to support AddOns
~ Also added ExecuteComponent flow node, which allows a component of the owning actor (if it implements a specific interface) to be executed via a proxy node in the Flow Graph.  We use this to wrap some legacy systems in flow graph nodes.

* Fix Linux compile errors and regressions on UFUNCTIONS

* Fix bug with ExecuteInput for AddOns

Nodes and AddOns could execute for pins they did not expect, if the AddOns introduced pins that the Node (or other AddOns) were not aware of.

Also, removed some deprecation warnings because they were generating compile warnings, which could cause some projects problems with automated builds.  I changed the deprecation message to a human-readable message only.

* Slight adjustment to IsSupportedInputPinName()

early return if the array is empty

* AddOns

Optimized and changed how Input/Outputs are added from AddOns

* Quality of life improvements

Revised the ForEachAddOn() signature, since it only ever needs to be used when iterating over all AddOns (recursively), as you can use a normal for loop over AddOns for just the AddOns of this object alone.

Also moved some access functions from FlowNode to FlowNodeBase and exposed them to Blueprint, based on a question I saw on the Discord about Get Actor Owner access.

* Extracted Component injection code into Flow base

also updated ExecuteComponent to use it

* Transferring flags from Template component to instance + Transient

* Singular InjectComponent signature

* Small revisions to Execute Component flownode

* Fix uniqueness problem with component lookup

* fixed GC-related compilation warning in AddReferencedObjects()

* cosmetic pass on AddOns refactor

- Adding Category to a few functions which fixes build machine compilation in the plugin mode.
- Partially restoring class layout to its original shape, taking in account new sections, and improve it a little bit.
- Reversing some changes on making symbols editor-only which might break non-editor tools working with Flow Graph.
- Static analysis fixes.

* Flow Diff improvements

* Added AActor::GetActorClassDefaultComponents() alternative for UE < 5.3

* Folded IFlowNativeExecutableInterface into UFlowNodeBase

* Fix compile error

* Fix for Undo buffer for SetConfigText

* Deleted file

* deleted files

* Flow Data Pins (initial version)

Initial version for Flow Data Pins feature.

* Removed Class/Object enum values (until we finish the feature)

* Restored commented-out code (and unexpanded the macro)

* Reverted last change.  need to work on the macros more.

* Fixed compilation problem with Enum macro

* Fixed details customization for flow data pin input properties

* Fixed problem detecting property to pin binding changes.

It was only checking the sizes, not doing a deep comparison of the two maps.

* Fix problem with data pins incorrectly breaking the wrong pin's connections

* Fix erroneous return value where it could find suppliers, but reported that it couldn't

* Reworked DataPins to use the authored property name for the lookup map

Was using DisplayName, but UE doesn't provide a convenient lookup for the property DisplayName in non-editor builds, making for keeping the property name and the pin name in sync more cumbersome than I'd prefer.

Using the Authored name instead allows us to use the GET_MEMBER_PROPERTY_NAME_CHECKED macro to keep the name in sync with the property w/static assert.

* Added details customization for named data pin output property

* Added InstancedStruct support for Flow Data Pins

* Added FlowDataPinPropertyProviderInterface for the AI Flow plugin to use to integrate with data pins.

* Status String support for AddOns and ForEachAddOn improvements

AddOns can now include line(s) in the StatusString of their node
ForEachAddOn functions can break early with 'success' or 'failure'

* Added Flow Data Pins support for Rotator, Object, Class

* Refined how Data Pins are auto-generated, graph and node updates in the editor

* Disallow Reroute nodes for non-exec flow pin connections

At least until we develop some data-pin-friendly solution, disabling the reroute node generation for flow data pin wires.

* Wire colors match their pin color

* Small refinements

* Small bugfixes

missing header includes
calling Super::
Log an Timer support for assets that haven't been resaved with data pins to still source their data correctly.

* Code review changes and crash fix

crash fix for copy/pasting a flow node with addons. This crash would only happen in this PR (not the current flow mainline version)

* Bugfix - Pasting & Drag/Dropping AddOns onto nodes now respects allowed child addon filtering

* Updated signature of UFlowNodeAddOn::AcceptFlowNodeAddOnParent() to include additional proposed children

This signature now affords the AddOn->Parent question the same information as the Parent->AddOn question gained in the previous change

* Fix for BP compile errors for the default array reference for the new AdditionalAddOnsToAssumeAreChildren parameter

* Fix crash when pasting nodes with addons into another graph

The addons array is not fully-formed when called from some mid-paste functions.

* Tag-based Node Display Style conversion

hierarchical tag-indexed NodeDisplayStyle.

- project extensible node styles
- hierarchical node style definitions in INI

* UE 5.5 compilation error fixes

* Some fixes for Custom NodeDisplayStyle and 5.4 compilation defines

---------

Co-authored-by: FoolsTheoryDev <krzysiek.justynski@gmail.com>

* Add virtual to StartRootFlow & FinishRootFlow (#229)

Make it possible to override StartRootFlow / FinishRootFlow. Makes it easier to extend UFlowComponent for project specific needs.

* Add a virtual function AdditionalNodeIndexing in FlowGraphNode to index property that are not handled by default (#234)

* fixed UE 5.5 compilation, formatting tweaked

* compilation fix: BuildPlugin mode

* removed NSLOCTEXT copy-pasted a long time ago

* removed support for UE 5.1 and UE 5.2

* standardized notation of ENGINE_MINOR_VERSION

* copyright fix

* POTENTIALLY BREAKING CHANGE: Added UAssetDefinition_FlowAsset implementing a new way of defining editor-only asset properties like asset category.

This is a direct replacement for FAssetTypeActions_FlowAsset. If you had any custom asset class extending `UFlowAsset`, you probably need to convert your custom FAssetTypeActions to UAssetDefinition. This is quite a straightforward process.

* Renaming new tags now used to define the Display Style of nodes

- Wrapped all tags in the FlowNodeStyle namespace which lets us shorten tags from TAG_Flow_NodeDisplayStyle_Node_Condition to FlowNodeStyle::Condition.
- Changed the naming of one option: "Node" (which was previously named "Default" as enum option) changed to "Base".
- Flow.NodeDisplayStyle tag category is shortened to Flow.NodeStyle as this would intuitively replace the ENodeStyle enum for the perspective of users.

* DataPinValueSupplier  defaults to nullptr

Useful in case of instantiating root graph programmatically from project-specific code

* Post-PR 231 merge revisions PR (#240)

* Latest updates post-merge with mainline
* Removed stray comment
* Bugfix for modifying every flow asset that is opened in the editor.

We were unilaterally modifying all flow nodes by reconstructing their nodes when starting editing a flow asset, which is not what we want or need to do.

---------

Co-authored-by: FoolsTheoryDev <krzysiek.justynski@gmail.com>

* Initialize Data Pin Struct Values in order to remove errors (#241)

(cherry picked from commit cd6575cc577b91b707e0fc9b1106dd7beaee2c4d)

Co-authored-by: szabob <szabob@neocore.local>

* empty line

* TObjectPtr refactor (#242)

* More TObjectPtr fixes (#243)

* Replace AssetTypeActions for AssetDefinition (POTENTIALLY BREAKING CHANGE) (#245)

Added UAssetDefinition_FlowNodeBlueprint & UAssetDefinition_FlowNodeAddOnBlueprint just like Krzysztof Justyński added UAssetDefinition_FlowAsset in commit: "5ef45f328809213024c99e9aba883ace7a104c58".

This is a direct replacement for FAssetTypeActions_FlowNodeBlueprint/FAssetTypeActions_FlowNodeAddOnBlueprint.

(cherry picked from commit 07f3616eca03c2e57332e58ff318cec62f586b7b)

Co-authored-by: szabob <szabob@neocore.local>

* Extending Allow/Deny to include AddOns (#244)

* Flow AddOns

Introduced FlowAddOns

~ Major rework of the Flow Editor to support AddOns
~ Also added ExecuteComponent flow node, which allows a component of the owning actor (if it implements a specific interface) to be executed via a proxy node in the Flow Graph.  We use this to wrap some legacy systems in flow graph nodes.

* Fix Linux compile errors and regressions on UFUNCTIONS

* Fix bug with ExecuteInput for AddOns

Nodes and AddOns could execute for pins they did not expect, if the AddOns introduced pins that the Node (or other AddOns) were not aware of.

Also, removed some deprecation warnings because they were generating compile warnings, which could cause some projects problems with automated builds.  I changed the deprecation message to a human-readable message only.

* Slight adjustment to IsSupportedInputPinName()

early return if the array is empty

* AddOns

Optimized and changed how Input/Outputs are added from AddOns

* Quality of life improvements

Revised the ForEachAddOn() signature, since it only ever needs to be used when iterating over all AddOns (recursively), as you can use a normal for loop over AddOns for just the AddOns of this object alone.

Also moved some access functions from FlowNode to FlowNodeBase and exposed them to Blueprint, based on a question I saw on the Discord about Get Actor Owner access.

* Extracted Component injection code into Flow base

also updated ExecuteComponent to use it

* Transferring flags from Template component to instance + Transient

* Singular InjectComponent signature

* Small revisions to Execute Component flownode

* Fix uniqueness problem with component lookup

* fixed GC-related compilation warning in AddReferencedObjects()

* cosmetic pass on AddOns refactor

- Adding Category to a few functions which fixes build machine compilation in the plugin mode.
- Partially restoring class layout to its original shape, taking in account new sections, and improve it a little bit.
- Reversing some changes on making symbols editor-only which might break non-editor tools working with Flow Graph.
- Static analysis fixes.

* Flow Diff improvements

* Added AActor::GetActorClassDefaultComponents() alternative for UE < 5.3

* Folded IFlowNativeExecutableInterface into UFlowNodeBase

* Fix compile error

* Fix for Undo buffer for SetConfigText

* Deleted file

* deleted files

* Flow Data Pins (initial version)

Initial version for Flow Data Pins feature.

* Removed Class/Object enum values (until we finish the feature)

* Restored commented-out code (and unexpanded the macro)

* Reverted last change.  need to work on the macros more.

* Fixed compilation problem with Enum macro

* Fixed details customization for flow data pin input properties

* Fixed problem detecting property to pin binding changes.

It was only checking the sizes, not doing a deep comparison of the two maps.

* Fix problem with data pins incorrectly breaking the wrong pin's connections

* Fix erroneous return value where it could find suppliers, but reported that it couldn't

* Reworked DataPins to use the authored property name for the lookup map

Was using DisplayName, but UE doesn't provide a convenient lookup for the property DisplayName in non-editor builds, making for keeping the property name and the pin name in sync more cumbersome than I'd prefer.

Using the Authored name instead allows us to use the GET_MEMBER_PROPERTY_NAME_CHECKED macro to keep the name in sync with the property w/static assert.

* Added details customization for named data pin output property

* Added InstancedStruct support for Flow Data Pins

* Added FlowDataPinPropertyProviderInterface for the AI Flow plugin to use to integrate with data pins.

* Status String support for AddOns and ForEachAddOn improvements

AddOns can now include line(s) in the StatusString of their node
ForEachAddOn functions can break early with 'success' or 'failure'

* Added Flow Data Pins support for Rotator, Object, Class

* Refined how Data Pins are auto-generated, graph and node updates in the editor

* Disallow Reroute nodes for non-exec flow pin connections

At least until we develop some data-pin-friendly solution, disabling the reroute node generation for flow data pin wires.

* Wire colors match their pin color

* Small refinements

* Small bugfixes

missing header includes
calling Super::
Log an Timer support for assets that haven't been resaved with data pins to still source their data correctly.

* Code review changes and crash fix

crash fix for copy/pasting a flow node with addons. This crash would only happen in this PR (not the current flow mainline version)

* Bugfix - Pasting & Drag/Dropping AddOns onto nodes now respects allowed child addon filtering

* Updated signature of UFlowNodeAddOn::AcceptFlowNodeAddOnParent() to include additional proposed children

This signature now affords the AddOn->Parent question the same information as the Parent->AddOn question gained in the previous change

* Fix for BP compile errors for the default array reference for the new AdditionalAddOnsToAssumeAreChildren parameter

* Fix crash when pasting nodes with addons into another graph

The addons array is not fully-formed when called from some mid-paste functions.

* Tag-based Node Display Style conversion

hierarchical tag-indexed NodeDisplayStyle.

- project extensible node styles
- hierarchical node style definitions in INI

* UE 5.5 compilation error fixes

* Some fixes for Custom NodeDisplayStyle and 5.4 compilation defines

* Latest updates post-merge with mainline

* removed duplicate line

* Restored blank line

* Removed stray comment

* Bugfix for modifying every flow asset that is opened in the editor.

We were unilaterally modifying all flow nodes by reconstructing their nodes when starting editing a flow asset, which is not what we want or need to do.

* Extending Allow/Deny to include AddOns

- also adding capability to opt back-in to being allowed as a subclass of a denied node

---------

Co-authored-by: FoolsTheoryDev <krzysiek.justynski@gmail.com>

* Update FlowEditor.Build.cs

* remove StructUtils reference from UE 5.5

* Revert "remove StructUtils reference from UE 5.5"

This reverts commit 10c469a6196e896386ff642532d75c84556071c5.

* rolled back AssetDefinition_FlowNodeBlueprint

this change requires UE 5.5 as previous engine versions are missing export macros in FAssetTypeActions_Blueprint

* Fix a typo in the auto data pin generation for Rotators (#247)

* Flow AddOns

Introduced FlowAddOns

~ Major rework of the Flow Editor to support AddOns
~ Also added ExecuteComponent flow node, which allows a component of the owning actor (if it implements a specific interface) to be executed via a proxy node in the Flow Graph.  We use this to wrap some legacy systems in flow graph nodes.

* Fix Linux compile errors and regressions on UFUNCTIONS

* Fix bug with ExecuteInput for AddOns

Nodes and AddOns could execute for pins they did not expect, if the AddOns introduced pins that the Node (or other AddOns) were not aware of.

Also, removed some deprecation warnings because they were generating compile warnings, which could cause some projects problems with automated builds.  I changed the deprecation message to a human-readable message only.

* Slight adjustment to IsSupportedInputPinName()

early return if the array is empty

* AddOns

Optimized and changed how Input/Outputs are added from AddOns

* Quality of life improvements

Revised the ForEachAddOn() signature, since it only ever needs to be used when iterating over all AddOns (recursively), as you can use a normal for loop over AddOns for just the AddOns of this object alone.

Also moved some access functions from FlowNode to FlowNodeBase and exposed them to Blueprint, based on a question I saw on the Discord about Get Actor Owner access.

* Extracted Component injection code into Flow base

also updated ExecuteComponent to use it

* Transferring flags from Template component to instance + Transient

* Singular InjectComponent signature

* Small revisions to Execute Component flownode

* Fix uniqueness problem with component lookup

* fixed GC-related compilation warning in AddReferencedObjects()

* cosmetic pass on AddOns refactor

- Adding Category to a few functions which fixes build machine compilation in the plugin mode.
- Partially restoring class layout to its original shape, taking in account new sections, and improve it a little bit.
- Reversing some changes on making symbols editor-only which might break non-editor tools working with Flow Graph.
- Static analysis fixes.

* Flow Diff improvements

* Added AActor::GetActorClassDefaultComponents() alternative for UE < 5.3

* Folded IFlowNativeExecutableInterface into UFlowNodeBase

* Fix compile error

* Fix for Undo buffer for SetConfigText

* Deleted file

* deleted files

* Flow Data Pins (initial version)

Initial version for Flow Data Pins feature.

* Removed Class/Object enum values (until we finish the feature)

* Restored commented-out code (and unexpanded the macro)

* Reverted last change.  need to work on the macros more.

* Fixed compilation problem with Enum macro

* Fixed details customization for flow data pin input properties

* Fixed problem detecting property to pin binding changes.

It was only checking the sizes, not doing a deep comparison of the two maps.

* Fix problem with data pins incorrectly breaking the wrong pin's connections

* Fix erroneous return value where it could find suppliers, but reported that it couldn't

* Reworked DataPins to use the authored property name for the lookup map

Was using DisplayName, but UE doesn't provide a convenient lookup for the property DisplayName in non-editor builds, making for keeping the property name and the pin name in sync more cumbersome than I'd prefer.

Using the Authored name instead allows us to use the GET_MEMBER_PROPERTY_NAME_CHECKED macro to keep the name in sync with the property w/static assert.

* Added details customization for named data pin output property

* Added InstancedStruct support for Flow Data Pins

* Added FlowDataPinPropertyProviderInterface for the AI Flow plugin to use to integrate with data pins.

* Status String support for AddOns and ForEachAddOn improvements

AddOns can now include line(s) in the StatusString of their node
ForEachAddOn functions can break early with 'success' or 'failure'

* Added Flow Data Pins support for Rotator, Object, Class

* Refined how Data Pins are auto-generated, graph and node updates in the editor

* Disallow Reroute nodes for non-exec flow pin connections

At least until we develop some data-pin-friendly solution, disabling the reroute node generation for flow data pin wires.

* Wire colors match their pin color

* Small refinements

* Small bugfixes

missing header includes
calling Super::
Log an Timer support for assets that haven't been resaved with data pins to still source their data correctly.

* Code review changes and crash fix

crash fix for copy/pasting a flow node with addons. This crash would only happen in this PR (not the current flow mainline version)

* Bugfix - Pasting & Drag/Dropping AddOns onto nodes now respects allowed child addon filtering

* Updated signature of UFlowNodeAddOn::AcceptFlowNodeAddOnParent() to include additional proposed children

This signature now affords the AddOn->Parent question the same information as the Parent->AddOn question gained in the previous change

* Fix for BP compile errors for the default array reference for the new AdditionalAddOnsToAssumeAreChildren parameter

* Fix crash when pasting nodes with addons into another graph

The addons array is not fully-formed when called from some mid-paste functions.

* Tag-based Node Display Style conversion

hierarchical tag-indexed NodeDisplayStyle.

- project extensible node styles
- hierarchical node style definitions in INI

* UE 5.5 compilation error fixes

* Some fixes for Custom NodeDisplayStyle and 5.4 compilation defines

* Latest updates post-merge with mainline

* removed duplicate line

* Restored blank line

* Removed stray comment

* Bugfix for modifying every flow asset that is opened in the editor.

We were unilaterally modifying all flow nodes by reconstructing their nodes when starting editing a flow asset, which is not what we want or need to do.

* Extending Allow/Deny to include AddOns

- also adding capability to opt back-in to being allowed as a subclass of a denied node

* Fix typo for Rotator auto data pin generation

Input was used, when it should be the output variant

---------

Co-authored-by: FoolsTheoryDev <krzysiek.justynski@gmail.com>

* code readability tweaks

* Call NotifyGraphChanged when ValidatingAsset to refresh nodes visually without making the asset dirty (#235)

* #215 fixed copying Comment node

It was indeed broken by Flow AddOn refactor.
Applied static analysis fixes while inspecting code.

* Code cleanup

Removed some unused local variables.

Updated class layout of UFlowGraph, so related methods are grouped together. Ensured that order of methods is the same in .cpp as in header.

No functional changes/.

* #205 preventing duplication of unique nodes like Start Node

* Flow 2.1

* Check FlowNode is active before TriggerOutput (#248)

If flow node already finished or aborted, we:
1. report an error (in this way, we don’t hide other problems such as not cleanup properly)
2. then return (we do not trigger output if node isn’t active)

* #237 Branch node never stops

* feat: Added BlueprintCallable function to trigger a custom input on a FlowComponent. (#214)

this allows more control from the owner of a FlowComponent, incases where sending a notify from actor would be more cumbersome.

* consistent naming of functions related to Custom Input/Output consistent

* Update README.md

* Fix compile errors against more strict -Wmissing-declarations (#251)

* Remove extra semi-colons triggering -Wmissing-declarations compiler error.

`FlowComponent.h(230,71): error: declaration does not declare anything [-Werror,-Wmissing-declarations]
        UE_DEPRECATED(5.5, TEXT("Please use OnRootFlowCustomEvent instead."));`

* Remove TEXT macro from UE_DEPRECATED usage it doesn't need.

* Enable plugin requirement EngineAssetDefinitions it relies on (#252)

```Warning: Plugin 'Flow' does not list plugin 'EngineAssetDefinitions' as a dependency, but module 'FlowEditor' depends on module 'EngineAssetDefinitions'.```

* fixed the issue where programmatic graph generation would create Start Node using improper UFlowGraphNode class

* Graph refresh system cleanup (#255)

* Clean up ReconstructNode/RefreshContextPins methods

* Graph editor improvements (stop refreshing whole graph unless needed)

* Major redesign of graph reconstruction/refreshing code

BREAKING CHANGE: RefreshContextPins() has been made protected. Replace any public usage of RefreshContextPins() with ReconstructNode() instead.

This commit improves editor performance of the graph editor, and fixes some minor bugs with the graph editor.

* Code cleanup

* Code cleanup

* Code cleanup

* Code cleanup, fixed HavePinsChanged() to ignore invalid (NAME_None) pins

* Made UFlowGraphNode::ReconstructNode() always rebuild the slate widget

Even if there are no updates required to the graph node; this ensures that the graph editor's 'Refresh' button still actually rebuilds the visual graph.

* Fix typo

* Clean up ReconstructNode/RefreshContextPins methods

Graph editor improvements (stop refreshing whole graph unless needed)

Major redesign of graph reconstruction/refreshing code

BREAKING CHANGE: RefreshContextPins() has been made protected. Replace any public usage of RefreshContextPins() with ReconstructNode() instead.

This commit improves editor performance of the graph editor, and fixes some minor bugs with the graph editor.

Code cleanup

Code cleanup

Code cleanup

Code cleanup, fixed HavePinsChanged() to ignore invalid (NAME_None) pins

Made UFlowGraphNode::ReconstructNode() always rebuild the slate widget

Even if there are no updates required to the graph node; this ensures that the graph editor's 'Refresh' button still actually rebuilds the visual graph.

Fix typo

* New project settings: allows anyone to override Flow Palette category for specific nodes without modifying source code.

* Post-merge updates from Riot version (#256)

* Flow AddOns

Introduced FlowAddOns

~ Major rework of the Flow Editor to support AddOns
~ Also added ExecuteComponent flow node, which allows a component of the owning actor (if it implements a specific interface) to be executed via a proxy node in the Flow Graph.  We use this to wrap some legacy systems in flow graph nodes.

* Fix Linux compile errors and regressions on UFUNCTIONS

* Fix bug with ExecuteInput for AddOns

Nodes and AddOns could execute for pins they did not expect, if the AddOns introduced pins that the Node (or other AddOns) were not aware of.

Also, removed some deprecation warnings because they were generating compile warnings, which could cause some projects problems with automated builds.  I changed the deprecation message to a human-readable message only.

* Slight adjustment to IsSupportedInputPinName()

early return if the array is empty

* AddOns

Optimized and changed how Input/Outputs are added from AddOns

* Quality of life improvements

Revised the ForEachAddOn() signature, since it only ever needs to be used when iterating over all AddOns (recursively), as you can use a normal for loop over AddOns for just the AddOns of this object alone.

Also moved some access functions from FlowNode to FlowNodeBase and exposed them to Blueprint, based on a question I saw on the Discord about Get Actor Owner access.

* Extracted Component injection code into Flow base

also updated ExecuteComponent to use it

* Transferring flags from Template component to instance + Transient

* Singular InjectComponent signature

* Small revisions to Execute Component flownode

* Fix uniqueness problem with component lookup

* fixed GC-related compilation warning in AddReferencedObjects()

* cosmetic pass on AddOns refactor

- Adding Category to a few functions which fixes build machine compilation in the plugin mode.
- Partially restoring class layout to its original shape, taking in account new sections, and improve it a little bit.
- Reversing some changes on making symbols editor-only which might break non-editor tools working with Flow Graph.
- Static analysis fixes.

* Flow Diff improvements

* Added AActor::GetActorClassDefaultComponents() alternative for UE < 5.3

* Folded IFlowNativeExecutableInterface into UFlowNodeBase

* Fix compile error

* Fix for Undo buffer for SetConfigText

* Deleted file

* deleted files

* Flow Data Pins (initial version)

Initial version for Flow Data Pins feature.

* Removed Class/Object enum values (until we finish the feature)

* Restored commented-out code (and unexpanded the macro)

* Reverted last change.  need to work on the macros more.

* Fixed compilation problem with Enum macro

* Fixed details customization for flow data pin input properties

* Fixed problem detecting property to pin binding changes.

It was only checking the sizes, not doing a deep comparison of the two maps.

* Fix problem with data pins incorrectly breaking the wrong pin's connections

* Fix erroneous return value where it could find suppliers, but reported that it couldn't

* Reworked DataPins to use the authored property name for the lookup map

Was using DisplayName, but UE doesn't provide a convenient lookup for the property DisplayName in non-editor builds, making for keeping the property name and the pin name in sync more cumbersome than I'd prefer.

Using the Authored name instead allows us to use the GET_MEMBER_PROPERTY_NAME_CHECKED macro to keep the name in sync with the property w/static assert.

* Added details customization for named data pin output property

* Added InstancedStruct support for Flow Data Pins

* Added FlowDataPinPropertyProviderInterface for the AI Flow plugin to use to integrate with data pins.

* Status String support for AddOns and ForEachAddOn improvements

AddOns can now include line(s) in the StatusString of their node
ForEachAddOn functions can break early with 'success' or 'failure'

* Added Flow Data Pins support for Rotator, Object, Class

* Refined how Data Pins are auto-generated, graph and node updates in the editor

* Disallow Reroute nodes for non-exec flow pin connections

At least until we develop some data-pin-friendly solution, disabling the reroute node generation for flow data pin wires.

* Wire colors match their pin color

* Small refinements

* Small bugfixes

missing header includes
calling Super::
Log an Timer support for assets that haven't been resaved with data pins to still source their data correctly.

* Code review changes and crash fix

crash fix for copy/pasting a flow node with addons. This crash would only happen in this PR (not the current flow mainline version)

* Bugfix - Pasting & Drag/Dropping AddOns onto nodes now respects allowed child addon filtering

* Updated signature of UFlowNodeAddOn::AcceptFlowNodeAddOnParent() to include additional proposed children

This signature now affords the AddOn->Parent question the same information as the Parent->AddOn question gained in the previous change

* Fix for BP compile errors for the default array reference for the new AdditionalAddOnsToAssumeAreChildren parameter

* Fix crash when pasting nodes with addons into another graph

The addons array is not fully-formed when called from some mid-paste functions.

* Tag-based Node Display Style conversion

hierarchical tag-indexed NodeDisplayStyle.

- project extensible node styles
- hierarchical node style definitions in INI

* UE 5.5 compilation error fixes

* Some fixes for Custom NodeDisplayStyle and 5.4 compilation defines

* Latest updates post-merge with mainline

* removed duplicate line

* Restored blank line

* Removed stray comment

* Bugfix for modifying every flow asset that is opened in the editor.

We were unilaterally modifying all flow nodes by reconstructing their nodes when starting editing a flow asset, which is not what we want or need to do.

* Extending Allow/Deny to include AddOns

- also adding capability to opt back-in to being allowed as a subclass of a denied node

* Fix typo for Rotator auto data pin generation

Input was used, when it should be the output variant

* Updates from our side

recategorization of nodes, and some other stuff

* Revisions post-merge with mainline

* Restored this from mainline

---------

Co-authored-by: FoolsTheoryDev <krzysiek.justynski@gmail.com>

* a new categorization of nodes, more flat than proposed in PR

* Node classes moved to folders matching new Palette layout

* Several improvements for copy/pasting nodes: (#219)

* Several improvements for copy/pasting nodes:
1. UFlowNode_Start now is substituted with UFlowNode_CustomInput when duplicating or copy/pasting. https://github.com/MothCocoon/FlowGraph/issues/205
2. Reset EventName in UFlowNode_CustomInput after duplicating or copy/pasting
3. Fix copy/pasting comments. https://github.com/MothCocoon/FlowGraph/issues/215
4. CanUserDeleteNode and CanDuplicateNode now use FlowNode's CDO if NodeInstance is NULL (always when pasting). This will prevent pasting nodes that cannot be duplicated, but are copied with other duplicable nodes.
5. Improve duplicating and copy/pasting of AddOns (as a reference was taken AIGraphEditor code)
  - duplicated AddOn is pasted on the same level as selected AddOn
  - allow pasting AddOns only if there is one SelectedNode
  - check if SelectedNode for paste can accept AddOn
  - fix copying AddOns if both AddOn and its ParentNode are selected
  - fix copying AddOns if there are other GraphNodes selected (not AddOns)

* Fix pasting node into FlowAsset when FlowAsset does not allow to have such node

* Revert fixes for copy/pasting nodes

* Some fixes after merge

* Removed unnecessary bool for duplicating

* Clean unused imports and code after merging

* integrate changes with mainline

---------

Co-authored-by: Krzysztof Justyński <krzysiek.justynski@gmail.com>

* cosmetic update to last PR

* restored EngineAssetDefinitions

* removed BlueprintReadWrite as blueprint util couldn't manipulate pins

Exclude PinFriendlyName from localization #257

* removed support for UE 5.3

* removed obsolete local var which confused contributors

* Updates for AI Flow GetBlackboardValues (#259)

Added additional constructors for FFlowDataPinResult_Enum(), that are used in an AI Flow node: "GetBlackboardValues"

Moved the RefreshContextPins() call to before ShouldReconstructNode(), so that it has an opportunity to rebuild the context pins source values prior to testing if the node needs to be rebuilt (which tests the context pin source values vs the pin widgets for differences).

* added meta specifier to force using custom methods

suggested by @MaksymKapelianovych

* Small addition for custom events to help find them in a large graphs.  (#258)

* Added button to select custom event node in graph

* Fix code style

* renamed debugger class to avoid future confusion with naming other debugger subsystems

Need for rename came up while reviewing this PR
https://github.com/MothCocoon/FlowGraph/pull/199#issuecomment-2628978406

* Removed a deprecated Call Owner Function feature

* RemoveSubFlow - Set NodeOwningThisAssetInstance  after FinishFlow (#263)

Make sure to set the NodeOwningThisAssetInstance after the FinishFlow call, as it may be needed in the FinishFlow method

* restored old name of method

to be removed after the next plugin release

* Exposed CreateFlowInstance as a public method.

Useful in projects where Root-SubGraph relations are "replaced" with a loose set of graphs, i.e. card games.

* Fix PassThrough nodes in loops (#267)

* Added missing calls to parent class Cleanup method (#269)

* Adaptive Build fix for when all FlowGraph is built as separate source files. (#273)

* UFlowGraphNode::ReconstructNode and associated functions rewrite to clean up graph behavior (#264)

* Rewrite UFlowGraphNode::ReconstructNode() function to fix bugs

1) Make all pin types and sources correctly update when modified, 2) fix unnecessary dirtying of flow asset upon opening (unnecessary Modify() calls)

* Additional cleanup of graph refresh & reconstruct node behavior

- Added UFlowGraph "IsSaving" state; made UFlowGraphNode skip node reconstruction during save
- Added UFlowGraphNode "IsDestroyingNode" state, made UFlowGraphNode skip node reconstruction during node deletion
- Fixed minor bug from previous commit which broke certain transaction undos in ReconstructNode()

* Additional cleanup

- Added 2 missing FlowNode Modify() calls
- Replaced logs with ensures
- Cleanup Lambda

* Flow Traits are now stored locally for every user (#199)

 Node and pin breakpoints are now stored locally for every user. This is thanks to moving data structures out of UFlowGraphNode, we no longer need to save assets to remember added breakpoints. Data is now stored in .ini and handled by created for this purpose `UFlowDebuggerSettings`. (contributed by Maksym Kapelianovych)

    * Added a new module to Flow plugin, FlowDebugger which is a DeveloperTool module. This might help with building a separate cook-only graph debugger. If anyone would be willing to implement such a feature, of course.
    * POTENTIALLY BREAKING CHANGE: FFlowPinTrait struct has been renamed to FFlowBreakpoint and moved to the FlowDebugger module. If you utilize this struct in your custom code, please re-add it to your project code.

* moved LoadSynchronous() calls out of public method

This way external code is allowed to use async loading on its assets.

Methods operating on asset templates turned back to protected, as it doesn't make sense to duplicate logic of CreateFlowInstance method.

* removed obsolete redirects

* cosmetic cleanup of classes heavily touched by multiple persons

static analysis fixes, auto-formatting applied

* CIS compiliation fixes

* static analysis fixes

* Don't try to use MessageLog in Standalone, it only throws error to log

* Decoupled triggering breakpoints from the Flow Editor module

* UFlowGraphNode no longer operate on breakpoints.
* UFlowDebuggerSubsystem binds directly to runtime OnPinTriggered delegate.
* Pin breakpoint is now identified as NodeGuid and PinName instead of UEdGraphPin. This way it's possible to bind to OnPinTriggered delegate outside of editor! Events shall be receive in Standalone game, non-shipping game builds.
* Wrapped UEdGraphNode pointer in runtime Flow Node class with WITH_EDITORONLY_DATA as this isn't even loaded in Standalone game.

* cosmetic pass, shortened input param names for readability

and should fit easily fit the screen in single line

* Fix issue https://github.com/MothCocoon/FlowGraph/issues/277 by reintroducing some of deleted checks (#279)

* #272 prevent crash while accessing soft pointer to force-deleted Flow Asset

* cosmetic update

* Prevent crash in permanent error log (#287)

* Use weak pointer instead of raw pointer in log lambda

* Remove extra copy of weak pointer

* Fix issues with FlowComponent IdentityTags replication. (#285)

Fixes:
- Changes to identity tags while offline (NM_Standalone) did not replicate to Clients if going online at some later point.
- Changes to identity tags on the server before BeginPlay was called on the FlowComponent would never replicate to clients
- Multiple calls to UFlowComponent::AddIdentityTag(s) or UFlowComponent::RemoveIdentityTag(s) within a single net update did not get replicated properly. It only would replicate the last of each respective operation.

* ViewportStatsSubsystem delegates: work with TWeakObjectPtr<> instead … (#286)

* ViewportStatsSubsystem delegates: work with TWeakObjectPtr<> instead of checking for IsValid(this), which will always return nullptr once UFlowComponent/UFlowNodeBase is destroyed.

* Update FlowNodeBase.cpp

---------

Co-authored-by: Krzysiek Justyński <krzysiek.justynski@gmail.com>

* merge fix, style fixes

* Fix copy-paste breaking reroute node directionality (#281)

* Add menu and toolbar extensibility managers. This will allow to add new options to menu and toolbar for custom flow asset types without the need to extend/override FFlowAssetEditor. (#284)

* https://github.com/MothCocoon/FlowGraph/issues/276 - Ctrl+C & Ctrl+V Issue With Graph (#289)

On pasted nodes, if there is no involved add-on, proceed with the pasting, making it work like in Flow 1.6.

* Flow Breakpoint fixes (#290)

Add CanPlaceBreakpoints() functionality in UFlowGraphNode, return false on UFlowGraphNode_Reroute.

In SFlowGraphEditor, in Breakpoint() functions, add conditions to check if CanPlaceBreakpoint() on the selected node is true. Also, since multiple breakpoints on nodes can be set/unset at the same time, make the checks in these functions too. Since they are in a for loop, don't return immediately at the first element, but check if it makes sense to return true on the first item that returns true.

Fix breakpoints that could erroneously be added on reroute nodes through the context menu, or through F9, while not being visible at all.

In UFlowDebuggerSubsystem::MarkAsHit() functions, check if the NodeBreakpoint is enabled.

* UE 5.6 support

* Addressed UE 5.6 deprecations

* Addressed UE 5.6 deprecation

* Added check for PinFriendlyName. (#291)

* Added check for PinFriendlyName. This will force node to rebuild its pins if only PinFriendlyName is changed.

* Added check for PinFriendlyName

* * FlowSubsystem::LoadRootFlow takes the bAllowMultipleInstances parameter to allow loading multiple instances of a flow, in the same way you can start multiple instances of a root flow (#293)

* FlowComponent calls FlowSubsystem::LoadRootFlow with the value of its public parameter bAllowMultipleInstances

* Fix Linux packaged build by passing by reference (#294)

* fix missing includes hidden by unity build (#304)

* [Flow Graph Editor - SFlowGraphNode] (#301)

Fixed an issue where break point overlay brushes weren't showing properly due to deprecated code in 5.6

* Updates from Riot version end of Q2 2025 (#305)

* Updates from Riot version q2 2025

- Adjusted how we subscribe to external UFlowGraphNode changes
- Renamed FFlowNamedDataPinOutputPropertyCustomization (which is now also used for input pins…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants