Skip to content

ISMGraphGeneration::FSetNodePropertyArgs

#include <ISMGraphGeneration.h>

Description

struct ISMGraphGeneration::FSetNodePropertyArgs;

Arguments for setting a node property.

Public Attributes

Name
FName PropertyName
FString PropertyDefaultValue
int32 PropertyIndex
int32 TargetIndex
EArrayChangeType ArrayChangeType
USMNodeInstance * NodeInstance
FString SubPath

Public Attributes Documentation

variable PropertyName

FName PropertyName;

[Required] The name of the property.


variable PropertyDefaultValue

FString PropertyDefaultValue;

[Optional] The default value to assign the property.


variable PropertyIndex

int32 PropertyIndex = 0;

[Optional] Index when setting an array element. Also the source index for MoveElement.


variable TargetIndex

int32 TargetIndex = INDEX_NONE;

[Optional] Destination index for MoveElement. Unused by other change types.


variable ArrayChangeType

EArrayChangeType ArrayChangeType = SetElement;

[Optional] How to handle modifying an array.


variable NodeInstance

USMNodeInstance * NodeInstance = nullptr;

[Optional] The node instance which contains the property, such as a node stack instance. When null the default node template instance is used.


variable SubPath

FString SubPath;

[Optional] Dot-separated sub-path under PropertyName, addressing a nested member or array element to write. Empty = write the top-level UPROPERTY itself. Top-level array indexing uses PropertyIndex; nested array indexing uses Member[i] bracket syntax.

Strict-split precondition. When SubPath is non-empty, every struct parent in the path (the top-level pin named by PropertyName AND every intermediate struct member) must be split first via the editor's Split Struct Pin action (or USMPropertyGraph::SplitResultPin / USMPropertyGraph::SplitSubPin programmatically). Unsplit parents are rejected with a clear error - the write would land on a collapsed parent literal and either be invisible in the editor or get wiped by the next construction-script tick.

For SetElement (default), the path ends at the scalar leaf to write; missing nested array elements along the path are grown to fit.

For structural mutations (AddElement, InsertElement, RemoveElement, Clear, DuplicateElement, MoveElement), the path ends at the target array itself (no trailing [i]). PropertyIndex/TargetIndex carry the op's index parameters, matching the top-level API.

Syntax: MemberA.MemberB[i].MemberC[j].

Example targeting propA[0].propB[1].propC (scalar write): PropertyName = "propA"; PropertyIndex = 0; SubPath = TEXT("propB[1].propC");

Example adding an element to propA.nested.innerArray (structural): PropertyName = "propA"; ArrayChangeType = AddElement; SubPath = TEXT("nested.innerArray");

Extended graph properties (e.g. FSMTextGraphProperty) are addressed by the property name itself, not by their internal Result subfield; pin redistribution to split sub-pins and child property graphs is handled automatically.