Skip to content

USMGraphK2Node_PropertyNode_Base

Module: SMSystemEditor

#include <SMGraphK2Node_PropertyNode_Base.h>

Inherits from USMGraphK2Node_RuntimeNodeReference, ISMEditorGraphPropertyNodeInterface

Description

class USMGraphK2Node_PropertyNode_Base;

Pure root reference nodes that are placed within a property graph returning a value. USMGraphNode_Base -> K2 BoundGraph -> Property Graph -> Property Node (this) Slate Node for USMGraphNode_Base -> this->GetGraphNodeWidget Details Panel for USMGraphNode_Base -> this->GetGraphDetailWidget

Public Classes

Name
struct FHighlightArgs
struct FNotifyArgs

Public Functions

Name
virtual ~USMGraphK2Node_PropertyNode_Base() override
virtual bool IsNodePure() const override
virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override
virtual FText GetTooltipText() const override
virtual FLinearColor GetNodeTitleColor() const override
virtual void PostPlacedNewNode() override
virtual void ReconstructNode() override
virtual void PinDefaultValueChanged(UEdGraphPin * Pin) override
virtual void NotifyPinConnectionListChanged(UEdGraphPin * Pin) override
virtual bool IsConnectionDisallowed(const UEdGraphPin * MyPin, const UEdGraphPin * OtherPin, FString & OutReason) const override
virtual bool HasExternalDependencies(TArray< UStruct * > * OptionalOutput) const override
virtual bool CanCollapseNode() const override
virtual void AddPinSearchMetaDataInfo(const UEdGraphPin * Pin, TArray< FSearchTagDataPair > & OutTaggedMetaData) const override
virtual FString GetPinMetaData(FName InPinName, FName InKey) override
virtual void PreConsolidatedEventGraphValidate(FCompilerResultsLog & MessageLog) override
virtual void SetHighlight(bool bEnable, FLinearColor Color, bool bClearOnCompile) override
virtual void SetNotification(bool bEnable, ESMLogType Severity, const FString & Message, bool bClearOnCompile) override
virtual void SetNotificationAndHighlight(bool bEnable, ESMLogType Severity, const FString & Message, bool bClearOnCompile) override
virtual void ResetProperty() override
virtual bool IsPinWired(ESMGraphPropertyDirection Direction) const override
virtual void SetSubPropertyHighlight(FName SubPinName, bool bEnable, FLinearColor Color, bool bClearOnCompile) override
virtual void ResetSubProperty(FName SubPinName) override
virtual bool IsSubPinWired(FName SubPinName, ESMGraphPropertyDirection Direction) const override
virtual void RefreshPropertyPinFromValue() override
virtual void RefreshPropertyValueFromPin() override
virtual void PreCompileBeforeConstructionScripts(FSMKismetCompilerContext & CompilerContext)
virtual void PreCompile(FSMKismetCompilerContext & CompilerContext)
void LogPropertyFromTokenizedMessage(const TSharedRef< FTokenizedMessage > & InTokenizedMessage)
FProperty * GetProperty() const
USMPropertyGraph * GetPropertyGraph() const
bool IsGraphReadOnly() const
virtual void ConfigureRuntimePropertyNode()
virtual FSMGraphProperty_Base_Runtime * GetRuntimePropertyNode()
FSMGraphProperty_Base_Runtime * GetRuntimePropertyNodeChecked()
virtual FSMGraphProperty_Base * GetPropertyNode()
FSMGraphProperty_Base * GetPropertyNodeChecked()
FSMGraphProperty_Base * GetPropertyNodeConst() const
FSMGraphProperty_Base * GetPropertyNodeConstChecked() const
virtual void SetPropertyNode(FSMGraphProperty_Base * NewNode)
bool IsChildGraphResult() const
virtual UEdGraphPin * ResolveChildSourcePin(FKismetCompilerContext & InCompilerContext, const USMPropertyGraph * InOriginalChildGraph, USMGraphK2Node_PropertyNode_Base * InClonedChildResultNode)
virtual void SetPropertyDefaultsFromPin()
virtual void SetPinValueFromPropertyDefaults(bool bUpdateTemplateDefaults, bool bUseArchetype, bool bForce =false)
virtual void OnChildGraphCreated()
virtual void SeedFromParentCDOMemberValue(const FProperty * InMemberProperty, const void * InMemberValueAddr, bool bUseArchetype =true)
UScriptStruct * GetRuntimePropertyNodeType() const
FStructProperty * GetRuntimePropertyNodeProperty() const
FStructProperty * GetPropertyNodeProperty(bool bRuntimeOnly) const
USMNodeInstance * GetOwningTemplate() const
USMNodeBlueprint * GetTemplateBlueprint() const
UEdGraph * GetOwningGraph() const
USMPropertyGraph * FindOwningPropertyGraph() const
const FGuid & GetOwningNodeGuidChecked() const
const FGuid & GetOwningTemplateGuid() const
USMGraphNode_Base * GetOwningGraphNode() const
USMGraphNode_Base * GetOwningGraphNodeChecked() const
void JumpToPropertyGraph()
void JumpToTemplateBlueprint()
virtual TSharedPtr< class SSMGraphProperty_Base > GetGraphNodeWidget() const
virtual TSharedPtr< class SSMGraphProperty_Base > GetGraphNodeWidgetForSubPin(const FGuid & InSubPinId) const
virtual TSharedPtr< SWidget > GetGraphDetailWidget() const
virtual TSharedPtr< SWidget > GetViewGraphDetailWidget() const
virtual TSharedPtr< SWidget > GetToggleEditGraphDetailWidget() const
void GetContextMenuActionsForOwningNode(const UEdGraph * CurrentGraph, const UEdGraphNode * InGraphNode, const UEdGraphPin * InGraphPin, class UToolMenu * ToolMenu, bool bIsDebugging) const
virtual bool IsConsideredForDefaultProperty() const
virtual void DefaultPropertyActionWhenPlaced(TSharedPtr< SWidget > Widget)
virtual UEdGraphPin * GetResultPin(const EEdGraphPinDirection Direction =EGPD_Input) const
UEdGraphPin * GetResultPinChecked(const EEdGraphPinDirection Direction =EGPD_Input) const
virtual UEdGraphPin * GetAuthoredValuePin() const
virtual bool DoesResultPinHaveConnections(const EEdGraphPinDirection Direction) const
virtual bool IsValueSetToDefault() const
bool HasDefaultValueExplicitlyBeenChanged() const
bool IsTemplateValueSetToClassDefault() const
void MarkValueAuthored(FName InSubPinName =NAME_None)
bool IsValueModifiedOrWired() const
const FString & GetLastAutoGeneratedDefaultValue() const
bool IsSubPinAuthored(FName InSubPinName) const
void RecordLastAutoGeneratedSubPinDefaultValue(FName InSubPinName, const FString & InValue)
void ClearSubPinAuthored(FName InSubPinName)
void ClearAllSubPinAuthored()
bool IsInputProperty() const
bool IsOutputProperty() const
void SetHighlightedArgs(const FHighlightArgs & InHighlightArgs)
const FHighlightArgs & GetHighlightArgs() const
void SetNotificationArgs(const FNotifyArgs & InNotifyArgs)
const FNotifyArgs & GetNotifyArgs() const
virtual void OnPropertyInteractionChanged(const FSMPropertyInteractionEventArgs & InArgs) const
DECLARE_MULTICAST_DELEGATE_OneParam(FOnPropertyInteractionChanged , const FSMPropertyInteractionEventArgs & )
FOnPropertyInteractionChanged & GetOnPropertyInteractionChangedEvent()
FGuid RegisterWidget(const TWeakPtr< SWidget > & InWidget)
void UnregisterWidget(const FGuid & InGuid)
const TMap< FGuid, TWeakPtr< SWidget > > & GetRegisteredWidgets() const
DECLARE_MULTICAST_DELEGATE_OneParam(FForceVisualRefresh , const UEdGraphPin * )
void ForceVisualRefresh(const UEdGraphPin * Pin) const
void ConformLocalizationPackage(const FEdGraphPinType & PinType, FString & InOutTextString, const FText & DefaultTextValue, const UObject * Package)

Protected Functions

Name
void AddSharedPinSearchMetaDataInfo(const UEdGraphPin * InPin, TArray< FSearchTagDataPair > & OutTaggedMetaData) const
virtual void Internal_GetContextMenuActionsForOwningNode(const UEdGraph * CurrentGraph, const UEdGraphNode * InGraphNode, const UEdGraphPin * InGraphPin, FToolMenuSection & MenuSection, bool bIsDebugging) const
virtual void RefreshChildGraphFromParentCDO()

Public Attributes

Name
TObjectPtr< USMGraphNode_Base > OwningGraphNode
bool bMouseOverNodeProperty
FForceVisualRefresh ForceVisualRefreshEvent

Protected Attributes

Name
FHighlightArgs HighlightArgs
FNotifyArgs NotifyArgs
FString LastAutoGeneratedDefaultValue
TMap< FName, FString > LastAutoGeneratedSubPinDefaultValues
TSet< FName > AuthoredSubPinNames
uint8 bDefaultValueChanged
uint8 bIsChildGraphResult
uint8 bGeneratedDefaultValueBeingSet
uint8 bSettingPropertyDefaultsFromPin
uint8 bResettingProperty

Friends

Name
class FSMStructSplitPropagationSpec
class USMPropertyGraph

Additional inherited members

Public Functions inherited from ISMEditorGraphPropertyNodeInterface

Name
FLinearColor GetHighlightColorFromSeverity(const ESMLogType InSeverity)

Public Functions Documentation

function ~USMGraphK2Node_PropertyNode_Base

virtual ~USMGraphK2Node_PropertyNode_Base() override

function IsNodePure

inline virtual bool IsNodePure() const override

function GetNodeTitle

virtual FText GetNodeTitle(
    ENodeTitleType::Type TitleType
) const override

function GetTooltipText

virtual FText GetTooltipText() const override

function GetNodeTitleColor

virtual FLinearColor GetNodeTitleColor() const override

function PostPlacedNewNode

virtual void PostPlacedNewNode() override

function ReconstructNode

virtual void ReconstructNode() override

function PinDefaultValueChanged

virtual void PinDefaultValueChanged(
    UEdGraphPin * Pin
) override

function NotifyPinConnectionListChanged

virtual void NotifyPinConnectionListChanged(
    UEdGraphPin * Pin
) override

function IsConnectionDisallowed

virtual bool IsConnectionDisallowed(
    const UEdGraphPin * MyPin,
    const UEdGraphPin * OtherPin,
    FString & OutReason
) const override

function HasExternalDependencies

virtual bool HasExternalDependencies(
    TArray< UStruct * > * OptionalOutput
) const override

function CanCollapseNode

inline virtual bool CanCollapseNode() const override

function AddPinSearchMetaDataInfo

virtual void AddPinSearchMetaDataInfo(
    const UEdGraphPin * Pin,
    TArray< FSearchTagDataPair > & OutTaggedMetaData
) const override

function GetPinMetaData

virtual FString GetPinMetaData(
    FName InPinName,
    FName InKey
) override

function PreConsolidatedEventGraphValidate

virtual void PreConsolidatedEventGraphValidate(
    FCompilerResultsLog & MessageLog
) override

function SetHighlight

virtual void SetHighlight(
    bool bEnable,
    FLinearColor Color,
    bool bClearOnCompile
) override

Highlight a property on the owning graph node.

Parameters:

bEnable
Enable or disable the highlight.
Color
The color of the highlight.
bClearOnCompile
If the highlight should clear when the owning state machine blueprint is compiled.

Reimplements: ISMEditorGraphPropertyNodeInterface::SetHighlight


function SetNotification

virtual void SetNotification(
    bool bEnable,
    ESMLogType Severity,
    const FString & Message,
    bool bClearOnCompile
) override

Show a notification icon on the property.

Parameters:

bEnable
Show or hide the notification.
Severity
The severity of the log type.
Message
The tooltip to display when hovering the icon.
bClearOnCompile
If the notification should clear when the owning state machine blueprint is compiled.

Reimplements: ISMEditorGraphPropertyNodeInterface::SetNotification


function SetNotificationAndHighlight

virtual void SetNotificationAndHighlight(
    bool bEnable,
    ESMLogType Severity,
    const FString & Message,
    bool bClearOnCompile
) override

Show a notification icon and highlight the property based on the severity.

Parameters:

bEnable
Show or hide the notification and highlight.
Severity
The severity of the log type.
Message
The tooltip to display when hovering the icon.
bClearOnCompile
If the notification and highlight should clear when the owning state machine blueprint is compiled.

Reimplements: ISMEditorGraphPropertyNodeInterface::SetNotificationAndHighlight


function ResetProperty

virtual void ResetProperty() override

Reset the property back to the class defaults, completely resetting the graph.

Reimplements: ISMEditorGraphPropertyNodeInterface::ResetProperty


function IsPinWired

virtual bool IsPinWired(
    ESMGraphPropertyDirection Direction
) const override

Check if the result pin is wired to any other node, and there isn't a default value present.

Parameters:

Direction
The result pin direction we should check is wired.

Return: True if there is any connection to this pin. False if there is no connection or the pin doesn't exist.

Reimplements: ISMEditorGraphPropertyNodeInterface::IsPinWired


function SetSubPropertyHighlight

virtual void SetSubPropertyHighlight(
    FName SubPinName,
    bool bEnable,
    FLinearColor Color,
    bool bClearOnCompile
) override

Highlight a single split-struct sub-pin row of this property, leaving sibling rows neutral. Use the OutSubPinName returned by ISMEditorGraphNodeInterface::GetEditorGraphPropertyForSubPath to target a specific struct member.

Parameters:

SubPinName
The engine-assigned sub-pin name of the member to highlight. NAME_None highlights every row (same as SetHighlight).
bEnable
Enable or disable the highlight.
Color
The color of the highlight.
bClearOnCompile
If the highlight should clear when the owning state machine blueprint is compiled.

Reimplements: ISMEditorGraphPropertyNodeInterface::SetSubPropertyHighlight


function ResetSubProperty

virtual void ResetSubProperty(
    FName SubPinName
) override

Reset a single split-struct sub-pin back to the owning template's default value, leaving sibling sub-pins untouched.

Parameters:

SubPinName
The engine-assigned sub-pin name of the member to reset. NAME_None resets the entire property (same as ResetProperty).

Reimplements: ISMEditorGraphPropertyNodeInterface::ResetSubProperty


function IsSubPinWired

virtual bool IsSubPinWired(
    FName SubPinName,
    ESMGraphPropertyDirection Direction
) const override

Check if a single split-struct sub-pin is wired to another node. Split sub-pins wire into the node, so only the input direction is meaningful for a member.

Parameters:

SubPinName
The engine-assigned sub-pin name of the member to check. NAME_None checks the whole property (same as IsPinWired).
Direction
The result pin direction to check. Only applies when SubPinName is NAME_None; a named member sub-pin is always checked on its input pin.

Return: True if there is any connection to the sub-pin (or property). False if there is no connection or it doesn't exist.

Reimplements: ISMEditorGraphPropertyNodeInterface::IsSubPinWired


function RefreshPropertyPinFromValue

virtual void RefreshPropertyPinFromValue() override

Refresh an exposed property's blueprint pin on the UEdGraphNode from the property's current value. This can be used if you programmatically update an exposed property outside of editor construction scripts such as through PostEditChangeProperty and want that value reflected on the node.

Warning:

This should NOT be called during editor construction scripts as they will automatically refresh property pins.

Reimplements: ISMEditorGraphPropertyNodeInterface::RefreshPropertyPinFromValue


function RefreshPropertyValueFromPin

virtual void RefreshPropertyValueFromPin() override

Refresh an exposed property value from the matching pin on the UEdGraphNode. This can be used if you need to make sure the current value in C++ matches what is entered into the blueprint pin.

Warning:

This should NOT be called during editor construction scripts as they will automatically refresh property values.

Reimplements: ISMEditorGraphPropertyNodeInterface::RefreshPropertyValueFromPin


function PreCompileBeforeConstructionScripts

virtual void PreCompileBeforeConstructionScripts(
    FSMKismetCompilerContext & CompilerContext
)

Called during pre-compile before construction scripts have run.


function PreCompile

virtual void PreCompile(
    FSMKismetCompilerContext & CompilerContext
)

Called during pre compile by the owning state machine graph node.


function LogPropertyFromTokenizedMessage

void LogPropertyFromTokenizedMessage(
    const TSharedRef< FTokenizedMessage > & InTokenizedMessage
)

Logs property information from a given MessageLog tokenized message.


function GetProperty

FProperty * GetProperty() const

Return the FProperty this node represents.


function GetPropertyGraph

USMPropertyGraph * GetPropertyGraph() const

Retrieve the property graph where this property node is located.


function IsGraphReadOnly

bool IsGraphReadOnly() const

Checks if the owning graph is readonly.


function ConfigureRuntimePropertyNode

inline virtual void ConfigureRuntimePropertyNode()

Allow runtime properties to set their values from their editor counterparts.


function GetRuntimePropertyNode

inline virtual FSMGraphProperty_Base_Runtime * GetRuntimePropertyNode()

Get the runtime graph property.


function GetRuntimePropertyNodeChecked

inline FSMGraphProperty_Base_Runtime * GetRuntimePropertyNodeChecked()

function GetPropertyNode

inline virtual FSMGraphProperty_Base * GetPropertyNode()

Get the editor property node.


function GetPropertyNodeChecked

inline FSMGraphProperty_Base * GetPropertyNodeChecked()

Get the editor graph property.


function GetPropertyNodeConst

inline FSMGraphProperty_Base * GetPropertyNodeConst() const

function GetPropertyNodeConstChecked

inline FSMGraphProperty_Base * GetPropertyNodeConstChecked() const

function SetPropertyNode

inline virtual void SetPropertyNode(
    FSMGraphProperty_Base * NewNode
)

Sets the new node. Useful for refreshing the node with updated values from a template.


function IsChildGraphResult

inline bool IsChildGraphResult() const

True when this node is the result node of a child property graph owned by a parent USMPropertyGraph's SubPropertyGraphs map. Child values flow through compile-time bridge nodes, not a template CDO.


function ResolveChildSourcePin

virtual UEdGraphPin * ResolveChildSourcePin(
    FKismetCompilerContext & InCompilerContext,
    const USMPropertyGraph * InOriginalChildGraph,
    USMGraphK2Node_PropertyNode_Base * InClonedChildResultNode
)

Compile-time hook for child-graph bridges. Returns the pin in the consolidated graph that should wire to the parent struct's sub-pin (single child graph) or to a MakeArray element pin (array bucket). Default returns the cloned input result pin; subclasses whose runtime value type differs from the sub-pin's static type (e.g. text graphs) override to spawn an intermediate bridge node and return its output pin instead.

Parameters:

InCompilerContext
The active kismet compiler context.
InOriginalChildGraph
Pre-clone child USMPropertyGraph. Overrides walk up to the parent graph to read parent CDO defaults for non-Result fields.
InClonedChildResultNode
This node's clone in the consolidated event graph.

function SetPropertyDefaultsFromPin

virtual void SetPropertyDefaultsFromPin()

Sets the property on the node template to match this pin.


function SetPinValueFromPropertyDefaults

virtual void SetPinValueFromPropertyDefaults(
    bool bUpdateTemplateDefaults,
    bool bUseArchetype,
    bool bForce =false
)

Sets the pin default value from the property value.

This method was originally written to reset the pin to the node instance CDO value but has since grown to handle the current node instance value that could be changed programatically.

Parameters:

bUpdateTemplateDefaults
Potentially calls SetPropertyDefaultsFromPin instead, should not be used.
bUseArchetype
Use the node instance CDO to read values instead of the current instance.
bForce
Forces a change through even if the current value matches defaults.

function OnChildGraphCreated

inline virtual void OnChildGraphCreated()

Hook fired once after a child-graph result node is freshly placed in a property graph bucket. Subclasses with their own authoring surface (text graphs) override to seed the new child from the parent template's CDO. No-op base implementation: scalar sub-pins already get literal defaults via the engine's SplitPin distribution.


function SeedFromParentCDOMemberValue

virtual void SeedFromParentCDOMemberValue(
    const FProperty * InMemberProperty,
    const void * InMemberValueAddr,
    bool bUseArchetype =true
)

Apply a parent-resolved member value onto this child-graph result node. Used both for the canonical CDO-seed path (array bucket population, post-reconstruct refresh, Reset) and for programmatic instance-side authoring (SetNodePropertyValue with a SubPath).

Parallels SetPinValueFromPropertyDefaults's bUseArchetype semantics for the sub-pin case: archetype-source calls update the LastAutoGeneratedDefaultValue tracker so refresh paths can detect "still auto-seeded" state; instance-source calls do not, so the preserve-user-authoring gate sees the divergence and leaves the value alone on the next refresh. The caller resolves the address; bUseArchetype is the caller's promise about which side that address came from.

Parameters:

InMemberProperty
FProperty describing the value's type. For array elements, this is ArrayProperty->Inner (the element type).
InMemberValueAddr
Raw pointer to the value at the matching member or array index. The caller's choice of archetype/CDO or instance/template.
bUseArchetype
true when InMemberValueAddr was resolved from the parent CDO (seed intent); false when from the instance template (author).

function GetRuntimePropertyNodeType

UScriptStruct * GetRuntimePropertyNodeType() const

Get the runtime graph property type.


function GetRuntimePropertyNodeProperty

FStructProperty * GetRuntimePropertyNodeProperty() const

Get the runtime graph property as a FStructProperty.


function GetPropertyNodeProperty

FStructProperty * GetPropertyNodeProperty(
    bool bRuntimeOnly
) const

Return either a runtime property node only or an editor property node.


function GetOwningTemplate

USMNodeInstance * GetOwningTemplate() const

The template which owns this property.


function GetTemplateBlueprint

USMNodeBlueprint * GetTemplateBlueprint() const

The blueprint of the template owning this property.


function GetOwningGraph

UEdGraph * GetOwningGraph() const

Deprecated:

This function is deprecated. Use GetPropertyGraph() or GetGraph() instead, or use FindOwningPropertyGraph() for the same behavior.


function FindOwningPropertyGraph

USMPropertyGraph * FindOwningPropertyGraph() const

Locate the owning property graph in the owning state node.


function GetOwningNodeGuidChecked

const FGuid & GetOwningNodeGuidChecked() const

Return owning runtime node guid.


function GetOwningTemplateGuid

const FGuid & GetOwningTemplateGuid() const

Return the owning template guid if set.


function GetOwningGraphNode

USMGraphNode_Base * GetOwningGraphNode() const

The state machine graph node which owns this property.


function GetOwningGraphNodeChecked

USMGraphNode_Base * GetOwningGraphNodeChecked() const

function JumpToPropertyGraph

void JumpToPropertyGraph()

Open the property graph for this node. Should be the containing graph.


function JumpToTemplateBlueprint

void JumpToTemplateBlueprint()

function GetGraphNodeWidget

virtual TSharedPtr< class SSMGraphProperty_Base > GetGraphNodeWidget() const

Get the widget to represent this property node within a state machine graph node.


function GetGraphNodeWidgetForSubPin

inline virtual TSharedPtr< class SSMGraphProperty_Base > GetGraphNodeWidgetForSubPin(
    const FGuid & InSubPinId
) const

Widget representing a single split-struct sub-pin row on the owning state node. Null when the sub-pin can't be resolved or the subclass doesn't expose split-pin authoring.


function GetGraphDetailWidget

virtual TSharedPtr< SWidget > GetGraphDetailWidget() const

Get the widget to represent the graph node in the details panel.


function GetViewGraphDetailWidget

virtual TSharedPtr< SWidget > GetViewGraphDetailWidget() const

Widget used to go to the graph.


function GetToggleEditGraphDetailWidget

virtual TSharedPtr< SWidget > GetToggleEditGraphDetailWidget() const

Widget used to toggled edit mode of the graph.


function GetContextMenuActionsForOwningNode

void GetContextMenuActionsForOwningNode(
    const UEdGraph * CurrentGraph,
    const UEdGraphNode * InGraphNode,
    const UEdGraphPin * InGraphPin,
    class UToolMenu * ToolMenu,
    bool bIsDebugging
) const

This forwards up context menu actions when the owning state machine graph node is right clicked on over this property.


function IsConsideredForDefaultProperty

inline virtual bool IsConsideredForDefaultProperty() const

If the sgraphnode doesn't have a default name field then this property may be used as the default property to edit.


function DefaultPropertyActionWhenPlaced

inline virtual void DefaultPropertyActionWhenPlaced(
    TSharedPtr< SWidget > Widget
)

If the sgraphnode chooses this property as the default it will pass the already constructed widget in (should be the same type as GetGraphDetailWidget()) so it can be used for a default action – such as automatically editing text.


function GetResultPin

virtual UEdGraphPin * GetResultPin(
    const EEdGraphPinDirection Direction =EGPD_Input
) const

Locates the result pin if one exists.


function GetResultPinChecked

inline UEdGraphPin * GetResultPinChecked(
    const EEdGraphPinDirection Direction =EGPD_Input
) const

function GetAuthoredValuePin

inline virtual UEdGraphPin * GetAuthoredValuePin() const

The pin carrying this property's authored literal, which is also the pin Find in Blueprints indexes. Defaults to the input result pin. Property types that author into a different node of their graph override this so readers outside the graph can reach the value without knowing the graph's type.

Do not cache the result. When an override returns a pin on another node of the property graph, a graph reset invalidates it independently of this node's own reconstruction.

Return: The pin holding the authored literal, or nullptr when the property has no such pin.


function DoesResultPinHaveConnections

virtual bool DoesResultPinHaveConnections(
    const EEdGraphPinDirection Direction
) const

Checks if the result pin has a connection going to it, making this a variable connection rather than a defaults setter.


function IsValueSetToDefault

virtual bool IsValueSetToDefault() const

Checks if this instance matches the CDO default value.


function HasDefaultValueExplicitlyBeenChanged

inline bool HasDefaultValueExplicitlyBeenChanged() const

Return bDefaultValueChanged which is true once any change has occurred.


function IsTemplateValueSetToClassDefault

bool IsTemplateValueSetToClassDefault() const

Whether the owning template still holds the node class default for this property. Reports true when the two cannot be compared, such as a REINST class or a member that no longer resolves.


function MarkValueAuthored

void MarkValueAuthored(
    FName InSubPinName =NAME_None
)

Record this node's value as authored so the next refresh preserves it. Only call when the value differs from the class default, or the node stops tracking later changes to that default.

Parameters:

InSubPinName
Mark only this split leaf, for a caller that wrote a single member. NAME_None marks the whole property.

function IsValueModifiedOrWired

bool IsValueModifiedOrWired() const

Checks if the value has changed from the default or if a variable is wired to it.


function GetLastAutoGeneratedDefaultValue

inline const FString & GetLastAutoGeneratedDefaultValue() const

The last exported property text value.


function IsSubPinAuthored

inline bool IsSubPinAuthored(
    FName InSubPinName
) const

Whether the user has explicitly authored the named sub-pin since the last canonical-default seed.


function RecordLastAutoGeneratedSubPinDefaultValue

inline void RecordLastAutoGeneratedSubPinDefaultValue(
    FName InSubPinName,
    const FString & InValue
)

Record a canonical-default literal as the last value seeded onto the named sub-pin. The recorded value is the baseline restore-to-default detection compares against.


function ClearSubPinAuthored

inline void ClearSubPinAuthored(
    FName InSubPinName
)

Drop the user-authoring mark on a single sub-pin. Called by external sub-pin-reset paths.


function ClearAllSubPinAuthored

inline void ClearAllSubPinAuthored()

Drop every user-authoring mark on this node. Called by Recombine and Reset Property.


function IsInputProperty

bool IsInputProperty() const

This node is configured for input.


function IsOutputProperty

bool IsOutputProperty() const

This node is configured for output.


function SetHighlightedArgs

void SetHighlightedArgs(
    const FHighlightArgs & InHighlightArgs
)

Set if the node should be highlighted.


function GetHighlightArgs

inline const FHighlightArgs & GetHighlightArgs() const

Return the current args used for highlighting.


function SetNotificationArgs

void SetNotificationArgs(
    const FNotifyArgs & InNotifyArgs
)

Set if the node should display a notification.


function GetNotifyArgs

inline const FNotifyArgs & GetNotifyArgs() const

Return the current args used for notification info.


function OnPropertyInteractionChanged

virtual void OnPropertyInteractionChanged(
    const FSMPropertyInteractionEventArgs & InArgs
) const

When property access has changed.


function DECLARE_MULTICAST_DELEGATE_OneParam

DECLARE_MULTICAST_DELEGATE_OneParam(
    FOnPropertyInteractionChanged ,
    const FSMPropertyInteractionEventArgs & 
)

Event when property interaction has changed. Widgets sharing a property node filter on FSMPropertyInteractionEventArgs::SubPinId so sub-pin events don't leak to the main row.


function GetOnPropertyInteractionChangedEvent

inline FOnPropertyInteractionChanged & GetOnPropertyInteractionChangedEvent()

function RegisterWidget

FGuid RegisterWidget(
    const TWeakPtr< SWidget > & InWidget
)

Register a slate widget belonging to this property.

Return: A new Guid used to identify the widget.


function UnregisterWidget

void UnregisterWidget(
    const FGuid & InGuid
)

Remove a registered slate widget.

Parameters:

InGuid
The Guid used to initially register the widget.

function GetRegisteredWidgets

const TMap< FGuid, TWeakPtr< SWidget > > & GetRegisteredWidgets() const

Retrieve all registered widgets.


function DECLARE_MULTICAST_DELEGATE_OneParam

DECLARE_MULTICAST_DELEGATE_OneParam(
    FForceVisualRefresh ,
    const UEdGraphPin * 
)

function ForceVisualRefresh

inline void ForceVisualRefresh(
    const UEdGraphPin * Pin
) const

function ConformLocalizationPackage

static void ConformLocalizationPackage(
    const FEdGraphPinType & PinType,
    FString & InOutTextString,
    const FText & DefaultTextValue,
    const UObject * Package
)

For correcting the package and namespace on newly placed text properties. Based on EdGraphSchema_K2.cpp.


Protected Functions Documentation

function AddSharedPinSearchMetaDataInfo

void AddSharedPinSearchMetaDataInfo(
    const UEdGraphPin * InPin,
    TArray< FSearchTagDataPair > & OutTaggedMetaData
) const

Add shared pin search meta between properties. Children should call this if they overload AddPinSearchMetaDataInfo. Pass InPin so split sub-pin entries carry their own sub-pin name in the emitted NodeData.


function Internal_GetContextMenuActionsForOwningNode

virtual void Internal_GetContextMenuActionsForOwningNode(
    const UEdGraph * CurrentGraph,
    const UEdGraphNode * InGraphNode,
    const UEdGraphPin * InGraphPin,
    FToolMenuSection & MenuSection,
    bool bIsDebugging
) const

function RefreshChildGraphFromParentCDO

virtual void RefreshChildGraphFromParentCDO()

Re-apply the parent CDO struct member's default onto an existing child graph after a reconstruct, so a CDO edit + recompile flows through to the child. Base impl handles scalar element pins with a preserve-if-authored gate (reseed only when the child's literal still matches the last-seeded value). Subclasses with their own authoring surface override.


Public Attributes Documentation

variable OwningGraphNode

TObjectPtr< USMGraphNode_Base > OwningGraphNode;

variable bMouseOverNodeProperty

bool bMouseOverNodeProperty = false;

Deprecated:

This property is deprecated. Use RegisterWidget(), UnregisterWidget(), and GetRegisteredWidgets() for slate information.


variable ForceVisualRefreshEvent

FForceVisualRefresh ForceVisualRefreshEvent;

Protected Attributes Documentation

variable HighlightArgs

FHighlightArgs HighlightArgs;

Used to determine if the property should be highlighted in slate.


variable NotifyArgs

FNotifyArgs NotifyArgs;

Used to determine if a property should have a notification icon and message.


variable LastAutoGeneratedDefaultValue

FString LastAutoGeneratedDefaultValue;

The last default autogenerated value. The pin value resets to this if the default value hasn't changed.


variable LastAutoGeneratedSubPinDefaultValues

TMap< FName, FString > LastAutoGeneratedSubPinDefaultValues;

Per-sub-pin baseline: the most recent canonical-default literal seeded onto each sub-pin, keyed on the engine's sub-pin PinName. Persisted so restore-to-default detection works immediately after load. Refreshed for unauthored leaves by every canonical redistribute; dropped wholesale by Reset Property.


variable AuthoredSubPinNames

TSet< FName > AuthoredSubPinNames;

Names of split sub-pins the user has explicitly authored since the last canonical-default seed. Read by the redistribute as the per-leaf preserve-vs-reseed gate. Distinct from value-comparison heuristics so an authored value matching the engine autogenerated default ("0" on an int sub-pin) still counts as authored. Persisted; Reset Property clears.


variable bDefaultValueChanged

uint8 bDefaultValueChanged;

True once the user has changed the default value. It cannot become false again unless through Undo or Property Reset.


variable bIsChildGraphResult

uint8 bIsChildGraphResult;

True on the result node of a child property graph owned by a parent USMPropertyGraph's SubPropertyGraphs map. Standard template-backed paths (FProperty resolution, CDO writes, per-property-node compile walk) are skipped when set.


variable bGeneratedDefaultValueBeingSet

uint8 bGeneratedDefaultValueBeingSet;

True only while setting default pin value from the property.


variable bSettingPropertyDefaultsFromPin

uint8 bSettingPropertyDefaultsFromPin;

True only while setting default property values from the pin.


variable bResettingProperty

uint8 bResettingProperty;

True only during a property reset.


Private Attributes Documentation

variable bWaitingForWindowClose

uint8 bWaitingForWindowClose;

If this property is expecting a window to close before updating.


variable OnPropertyInteractionChangedEvent

FOnPropertyInteractionChanged OnPropertyInteractionChangedEvent;

When interaction with a property occurs.


variable RegisteredWidgets

TMap< FGuid, TWeakPtr< SWidget > > RegisteredWidgets;

Widgets representing this property, likely <= 1. However, if multiple graph panels are open to this node, multiple widgets may be registered.


Friends

friend FSMStructSplitPropagationSpec

friend class FSMStructSplitPropagationSpec(
    FSMStructSplitPropagationSpec 
);

friend USMPropertyGraph

friend class USMPropertyGraph(
    USMPropertyGraph 
);