Skip to content

USMInstance¶

Module: SMSystem

#include <SMInstance.h>

Inherits from UObject, FTickableGameObject, ISMStateMachineInterface, ISMInstanceInterface

Inherited by USMEditorInstance

Description¶

class USMInstance;

The base class all blueprint state machines inherit from. Each instance contains a "Root" state machine which is the top-level FSM defined in the graph and accessible through GetRootStateMachineNodeInstance().

Instances need to be initialized before they can be used. The process is:

  • Initialize(): Loads and maps out all contained states and transitions.
  • LoadFromMultipleStates(): [Optional] Only needed if any saved states need to be loaded.
  • Start(): Begins processing the state machine.
  • Stop(): Stops updating and running the state machine.
  • Shutdown(): Clears internal resources and empties the state machine. Initialize must be called again before use. This generally isn't necessary to call.

When using state machine components most methods should be called from the component instead.

See:

Public Functions¶

Name
USMInstance()
void Tick(float DeltaTime) override
images/classes/SMInstance/img/nd_img_Tick.png
virtual bool IsTickable() const override
images/classes/SMInstance/img/nd_img_IsTickable.png
virtual bool IsTickableInEditor() const override
virtual ETickableTickType GetTickableTickType() const override
virtual bool IsTickableWhenPaused() const override
images/classes/SMInstance/img/nd_img_IsTickableWhenPaused.png
virtual UWorld * GetTickableGameObjectWorld() const override
virtual TStatId GetStatId() const override
virtual bool IsSupportedForNetworking() const override
virtual void GetLifetimeReplicatedProps(TArray< FLifetimeProperty > & OutLifetimeProps) const override
virtual void BeginDestroy() override
virtual UWorld * GetWorld() const override
virtual int32 GetFunctionCallspace(UFunction * Function, FFrame * Stack) override
virtual bool CallRemoteFunction(UFunction * Function, void * Parms, FOutParmRec * OutParms, FFrame * Stack) override
virtual void Serialize(FArchive & Ar) override
virtual UObject * GetContext() const override
images/classes/SMInstance/img/nd_img_GetContext.png
USMStateMachineComponent * GetComponentOwner() const
images/classes/SMInstance/img/nd_img_GetComponentOwner.png
void SetComponentOwner(USMStateMachineComponent * InComponent)
virtual void Initialize(UObject * Context) override
images/classes/SMInstance/img/nd_img_Initialize.png
virtual void Start() override
images/classes/SMInstance/img/nd_img_Start.png
virtual void Update(float DeltaSeconds =0.f) override
images/classes/SMInstance/img/nd_img_Update.png
virtual void Stop() override
images/classes/SMInstance/img/nd_img_Stop.png
virtual void Restart() override
images/classes/SMInstance/img/nd_img_Restart.png
virtual void Shutdown() override
images/classes/SMInstance/img/nd_img_Shutdown.png
void ReplicatedStart()
images/classes/SMInstance/img/nd_img_ReplicatedStart.png
void ReplicatedStop()
images/classes/SMInstance/img/nd_img_ReplicatedStop.png
void ReplicatedRestart()
images/classes/SMInstance/img/nd_img_ReplicatedRestart.png
void StartWithNewContext(UObject * Context)
images/classes/SMInstance/img/nd_img_StartWithNewContext.png
void EvaluateTransitions()
images/classes/SMInstance/img/nd_img_EvaluateTransitions.png
bool EvaluateAndTakeTransitionChain(USMTransitionInstance * InFirstTransitionInstance)
images/classes/SMInstance/img/nd_img_EvaluateAndTakeTransitionChain.png
bool EvaluateAndTakeTransitionChain(FSMTransition & InFirstTransition)
bool EvaluateAndFindTransitionChain(USMTransitionInstance * InFirstTransitionInstance, TArray< USMTransitionInstance * > & OutTransitionChain, USMStateInstance_Base *& OutDestinationState, bool bRequirePreviousStateActive =true)
images/classes/SMInstance/img/nd_img_EvaluateAndFindTransitionChain.png
bool TakeTransitionChain(const TArray< USMTransitionInstance * > & InTransitionChain)
images/classes/SMInstance/img/nd_img_TakeTransitionChain.png
void PreloadAllNodeInstances()
images/classes/SMInstance/img/nd_img_PreloadAllNodeInstances.png
void ActivateStateLocally(const FGuid & StateGuid, bool bActive, bool bSetAllParents, bool bActivateNow =true)
void SwitchActiveState(USMStateInstance_Base * NewStateInstance, bool bDeactivateOtherStates =true)
images/classes/SMInstance/img/nd_img_SwitchActiveState.png
void SwitchActiveStateByQualifiedName(const FString & InFullPath, bool bDeactivateOtherStates =true)
images/classes/SMInstance/img/nd_img_SwitchActiveStateByQualifiedName.png
bool HasPendingActiveStates() const
bool IsUpdating() const
bool IsStopping() const
images/classes/SMInstance/img/nd_img_IsStopping.png
void LoadFromState(const FGuid & FromGuid, bool bAllParents =true, bool bNotify =true)
images/classes/SMInstance/img/nd_img_LoadFromState.png
void LoadFromMultipleStates(const TArray< FGuid > & FromGuids, bool bNotify =true)
images/classes/SMInstance/img/nd_img_LoadFromMultipleStates.png
bool AreInitialStatesSetFromLoad() const
images/classes/SMInstance/img/nd_img_AreInitialStatesSetFromLoad.png
void ClearLoadedStates()
images/classes/SMInstance/img/nd_img_ClearLoadedStates.png
void InitializeAsync(UObject * Context, const FOnStateMachineInstanceInitializedAsync & OnCompletedDelegate =FOnStateMachineInstanceInitializedAsync())
void K2_InitializeAsync(UObject * Context, FLatentActionInfo LatentInfo)
images/classes/SMInstance/img/nd_img_K2_InitializeAsync.png
void CancelAsyncInitialization()
images/classes/SMInstance/img/nd_img_CancelAsyncInitialization.png
void WaitForAsyncInitializationTask(bool bCallFinishInitialize =true)
images/classes/SMInstance/img/nd_img_WaitForAsyncInitializationTask.png
void TryGetNestedActiveState(FSMStateInfo & FoundState, bool & bSuccess) const
images/classes/SMInstance/img/nd_img_TryGetNestedActiveState.png
FSMState_Base * GetSingleActiveState() const
FSMState_Base * GetSingleNestedActiveState() const
TArray< FSMState_Base * > GetAllActiveStates() const
FGuid GetSingleActiveStateGuid(bool bCheckNested =true) const
images/classes/SMInstance/img/nd_img_GetSingleActiveStateGuid.png
void GetAllActiveStateGuids(TArray< FGuid > & ActiveGuids) const
images/classes/SMInstance/img/nd_img_GetAllActiveStateGuids.png
TArray< FGuid > GetAllActiveStateGuidsCopy() const
USMStateInstance_Base * GetSingleActiveStateInstance(bool bCheckNested =true) const
images/classes/SMInstance/img/nd_img_GetSingleActiveStateInstance.png
void GetAllActiveStateInstances(TArray< USMStateInstance_Base * > & ActiveStateInstances) const
images/classes/SMInstance/img/nd_img_GetAllActiveStateInstances.png
TArray< USMInstance * > GetAllReferencedInstances(bool bIncludeChildren =false) const
images/classes/SMInstance/img/nd_img_GetAllReferencedInstances.png
TArray< FSMStateMachine * > GetStateMachinesWithReferences(bool bIncludeChildren =false) const
void TryGetStateInfo(const FGuid & Guid, FSMStateInfo & StateInfo, bool & bSuccess) const
images/classes/SMInstance/img/nd_img_TryGetStateInfo.png
void TryGetTransitionInfo(const FGuid & Guid, FSMTransitionInfo & TransitionInfo, bool & bSuccess) const
images/classes/SMInstance/img/nd_img_TryGetTransitionInfo.png
USMInstance * GetReferencedInstanceByGuid(const FGuid & Guid) const
images/classes/SMInstance/img/nd_img_GetReferencedInstanceByGuid.png
USMStateInstance_Base * GetStateInstanceByGuid(const FGuid & Guid) const
images/classes/SMInstance/img/nd_img_GetStateInstanceByGuid.png
USMTransitionInstance * GetTransitionInstanceByGuid(const FGuid & Guid) const
images/classes/SMInstance/img/nd_img_GetTransitionInstanceByGuid.png
USMNodeInstance * GetNodeInstanceByGuid(const FGuid & Guid) const
images/classes/SMInstance/img/nd_img_GetNodeInstanceByGuid.png
USMStateInstance_Base * GetStateInstanceByQualifiedName(const FString & InFullPath) const
images/classes/SMInstance/img/nd_img_GetStateInstanceByQualifiedName.png
FSMState_Base * GetStateByGuid(const FGuid & Guid) const
FSMTransition * GetTransitionByGuid(const FGuid & Guid) const
FSMNode_Base * GetNodeByGuid(const FGuid & Guid) const
FSMState_Base * FindStateByGuid(const FGuid & Guid) const
TMap< FGuid, FGuid > & GetGuidRedirectMap()
images/classes/SMInstance/img/nd_img_GetGuidRedirectMap.png
void SetGuidRedirectMap(const TMap< FGuid, FGuid > & InGuidMap)
images/classes/SMInstance/img/nd_img_SetGuidRedirectMap.png
FGuid GetRedirectedGuid(const FGuid & InPathGuid) const
FSMStateMachine & GetRootStateMachine()
USMStateMachineInstance * GetRootStateMachineNodeInstance() const
images/classes/SMInstance/img/nd_img_GetRootStateMachineNodeInstance.png
bool IsActive() const
images/classes/SMInstance/img/nd_img_IsActive.png
bool CanEverTick() const
images/classes/SMInstance/img/nd_img_CanEverTick.png
void SetCanEverTick(bool Value)
images/classes/SMInstance/img/nd_img_SetCanEverTick.png
bool IsTickRegistered() const
void SetRegisterTick(bool Value)
void SetTickOnManualUpdate(bool Value)
images/classes/SMInstance/img/nd_img_SetTickOnManualUpdate.png
bool CanTickOnManualUpdate() const
images/classes/SMInstance/img/nd_img_CanTickOnManualUpdate.png
void SetCanTickWhenPaused(bool Value)
images/classes/SMInstance/img/nd_img_SetCanTickWhenPaused.png
void SetCanTickInEditor(bool Value)
void SetTickBeforeBeginPlay(bool Value)
images/classes/SMInstance/img/nd_img_SetTickBeforeBeginPlay.png
void SetTickInterval(float Value)
images/classes/SMInstance/img/nd_img_SetTickInterval.png
void SetAutoManageTime(bool Value)
images/classes/SMInstance/img/nd_img_SetAutoManageTime.png
bool CanAutoManageTime() const
images/classes/SMInstance/img/nd_img_CanAutoManageTime.png
float GetTickInterval() const
images/classes/SMInstance/img/nd_img_GetTickInterval.png
void SetStopOnEndState(bool Value)
images/classes/SMInstance/img/nd_img_SetStopOnEndState.png
bool GetStopOnEndState() const
images/classes/SMInstance/img/nd_img_GetStopOnEndState.png
bool IsInEndState() const
images/classes/SMInstance/img/nd_img_IsInEndState.png
void SetContext(UObject * Context)
images/classes/SMInstance/img/nd_img_SetContext.png
const TMap< FGuid, FSMNode_Base * > & GetNodeMap() const
const TMap< FGuid, FSMState_Base * > & GetStateMap() const
const TMap< FGuid, FSMTransition * > & GetTransitionMap() const
const TArray< FSMStateHistory > & GetStateHistory() const
images/classes/SMInstance/img/nd_img_GetStateHistory.png
void SetStateHistoryMaxCount(int32 NewSize)
images/classes/SMInstance/img/nd_img_SetStateHistoryMaxCount.png
int32 GetStateHistoryMaxCount() const
images/classes/SMInstance/img/nd_img_GetStateHistoryMaxCount.png
void ClearStateHistory()
images/classes/SMInstance/img/nd_img_ClearStateHistory.png
void GetAllStateInstances(TArray< USMStateInstance_Base * > & StateInstances) const
images/classes/SMInstance/img/nd_img_GetAllStateInstances.png
void GetAllTransitionInstances(TArray< USMTransitionInstance * > & TransitionInstances) const
images/classes/SMInstance/img/nd_img_GetAllTransitionInstances.png
void SetNetworkInterface(TScriptInterface< ISMStateMachineNetworkedInterface > InNetworkInterface)
TScriptInterface< ISMStateMachineNetworkedInterface > GetNetworkInterface() const
images/classes/SMInstance/img/nd_img_GetNetworkInterface.png
void K2_TryGetNetworkInterface(TScriptInterface< ISMStateMachineNetworkedInterface > & Interface, bool & bIsValid)
images/classes/SMInstance/img/nd_img_K2_TryGetNetworkInterface.png
ISMStateMachineNetworkedInterface * TryGetNetworkInterface() const
void UpdateNetworkConditions()
void CopyNetworkConditionsFrom(USMInstance * OtherInstance, bool bUpdateNodes =false)
void SetAllowTransitionsLocally(bool bCanEvaluateTransitions, bool bCanTakeTransitions)
void SetAllowStateLogic(bool bAllow)
bool HasStarted() const
images/classes/SMInstance/img/nd_img_HasStarted.png
bool IsInitialized() const
images/classes/SMInstance/img/nd_img_IsInitialized.png
bool IsInitializingAsync() const
images/classes/SMInstance/img/nd_img_IsInitializingAsync.png
bool IsReferenceTemplate() const
void SetReferenceOwner(USMInstance * Owner)
void AddReplicatedReference(const FGuid & PathGuid, USMInstance * NewReference)
void AddReplicatedNodeInstance(const FGuid & PathGuid, uint8 StackIndex, USMNodeInstance * NewNodeInstance)
USMInstance * FindReplicatedReference(const FGuid & PathGuid) const
USMNodeInstance * FindReplicatedNodeInstance(const FGuid & PathGuid, uint8 StackIndex)
const TArray< FSMReferenceContainer > & GetReplicatedReferences() const
const TArray< FSMNodeInstanceContainer > & GetReplicatedNodeInstances() const
bool HaveAllSubObjectsReplicated() const
bool HaveAllReferencesReplicated() const
bool HaveAllNodeInstancesReplicated() const
bool CanReplicateAsReference() const
bool CanReplicateNodeInstances() const
bool ShouldLookUpReplicatedNodeInstance() const
const USMInstance * GetReferenceOwnerConst() const
const USMInstance * GetPrimaryReferenceOwnerConst() const
bool IsPrimaryReferenceOwner() const
USMInstance * GetReferenceOwner() const
images/classes/SMInstance/img/nd_img_GetReferenceOwner.png
USMInstance * GetPrimaryReferenceOwner()
images/classes/SMInstance/img/nd_img_GetPrimaryReferenceOwner.png
TSubclassOf< USMStateMachineInstance > GetRootStateMachineNodeClass() const
images/classes/SMInstance/img/nd_img_GetRootStateMachineNodeClass.png
TSubclassOf< USMStateMachineInstance > GetStateMachineClass() const
void SetRootStateMachineNodeClass(TSubclassOf< USMStateMachineInstance > NewStateMachineNodeClass)
images/classes/SMInstance/img/nd_img_SetRootStateMachineNodeClass.png
void SetStateMachineClass(TSubclassOf< USMStateMachineInstance > NewStateMachineClass)
void OnPreStateMachineInitialized()
images/classes/SMInstance/img/nd_img_OnPreStateMachineInitialized.png
void OnStateMachineInitialized()
images/classes/SMInstance/img/nd_img_OnStateMachineInitialized.png
void OnStateMachineStart()
images/classes/SMInstance/img/nd_img_OnStateMachineStart.png
void OnStateMachineUpdate(float DeltaSeconds)
images/classes/SMInstance/img/nd_img_OnStateMachineUpdate.png
void OnStateMachineStop()
images/classes/SMInstance/img/nd_img_OnStateMachineStop.png
void OnStateMachineShutdown()
images/classes/SMInstance/img/nd_img_OnStateMachineShutdown.png
void OnStateMachineTransitionTaken(const FSMTransitionInfo & Transition)
images/classes/SMInstance/img/nd_img_OnStateMachineTransitionTaken.png
void OnStateMachineStateChanged(const FSMStateInfo & ToState, const FSMStateInfo & FromState)
images/classes/SMInstance/img/nd_img_OnStateMachineStateChanged.png
void OnStateMachineStateStarted(const FSMStateInfo & State)
images/classes/SMInstance/img/nd_img_OnStateMachineStateStarted.png
void NotifyTransitionTaken(const FSMTransition & Transition)
void NotifyStateChange(FSMState_Base * ToState, FSMState_Base * FromState)
void NotifyStateStarted(const FSMState_Base & State)
FSMDebugStateMachine & GetDebugStateMachine()
const FSMDebugStateMachine & GetDebugStateMachineConst() const
bool IsLoggingEnabled() const
void RunUpdateAsReference(float DeltaSeconds)
TEnumAsByte< ESMStateMachineInput::Type > GetInputType() const
Input. images/classes/SMInstance/img/nd_img_GetInputType.png
int32 GetInputPriority() const
images/classes/SMInstance/img/nd_img_GetInputPriority.png
bool GetBlockInput() const
images/classes/SMInstance/img/nd_img_GetBlockInput.png
APlayerController * GetInputController() const
images/classes/SMInstance/img/nd_img_GetInputController.png
void SetAutoReceiveInput(ESMStateMachineInput::Type InInputType)
images/classes/SMInstance/img/nd_img_SetAutoReceiveInput.png
void SetInputPriority(int32 InInputPriority)
images/classes/SMInstance/img/nd_img_SetInputPriority.png
void SetBlockInput(bool bNewValue)
images/classes/SMInstance/img/nd_img_SetBlockInput.png
UInputComponent * GetInputComponent() const
images/classes/SMInstance/img/nd_img_GetInputComponent.png
void SetManualInputController(APlayerController * InController =nullptr)
images/classes/SMInstance/img/nd_img_SetManualInputController.png
const TMap< FGuid, FSMGuidMap > & GetRootPathGuidCache() const
void SetRootPathGuidCache(const TMap< FGuid, FSMGuidMap > & InGuidCache)
TSharedPtr< FSMCachedPropertyData, ESPMode::ThreadSafe > GetCachedPropertyData()
const TMap< FName, TObjectPtr< UObject > > & GetGeneratedSubObjectTemplates() const
FSMInstanceProxyPropertyData & GetOutputProxyPropertyData()
FSMProxyPropertyData * FindOrAddOutputProxyPropertyData(const FSMProxyPropertyPath & InArgs)
FSMProxyPropertyData * FindOutputProxyPropertyData(const FSMProxyPropertyPath & InArgs)
TMap< FGuid, FSMExposedNodeFunctions > & GetNodeExposedFunctions()
void AddNonThreadSafeNode(FSMNode_Base * InNode)
FString GetRootNodeNameDefault()
FName GetStateMachineClassPropertyName()
FName GetInternalEventUpdateFunctionName()
FName GetInternalEvaluateAndTakeTransitionChainFunctionName()
FName GetInternalEventCleanupFunctionName()

Protected Functions¶

Name
void OnStateMachineInitialStateLoaded(const FGuid & StateGuid)
images/classes/SMInstance/img/nd_img_OnStateMachineInitialStateLoaded.png
virtual void OnStateMachineInitialStateLoaded_Implementation(const FGuid & StateGuid)
virtual void FinishInitialize()
bool HandleStopOnEndState()
virtual void CleanupAsyncObjects()
void CleanupAsyncInitializationTask()
virtual void Tick_Implementation(float DeltaTime)
virtual void OnPreStateMachineInitialized_Implementation()
virtual void OnStateMachineInitialized_Implementation()
virtual void OnStateMachineStart_Implementation()
virtual void OnStateMachineUpdate_Implementation(float DeltaSeconds)
virtual void OnStateMachineStop_Implementation()
virtual void OnStateMachineShutdown_Implementation()
virtual void OnStateMachineTransitionTaken_Implementation(const FSMTransitionInfo & Transition)
virtual void OnStateMachineStateChanged_Implementation(const FSMStateInfo & ToState, const FSMStateInfo & FromState)
virtual void OnStateMachineStateStarted_Implementation(const FSMStateInfo & State)
void Internal_Update(float DeltaSeconds)
bool Internal_EvaluateAndTakeTransitionChainByGuid(const FGuid & PathGuid)
void Internal_EventUpdate()
void Internal_EventCleanup(const FGuid & PathGuid)
void BuildStateMachineMap(FSMStateMachine * StateMachine)
void BuildStateMachineMap(FSMStateMachine * StateMachine, TSet< USMInstance * > & InstancesMapped)
bool CheckIsInitialized() const
void UpdateTime()
void RecordPreviousStateHistory(FSMState_Base * PreviousState)
void TrimStateHistory()

Public Attributes¶

Name
FGuid RootStateMachineGuid
FOnStateMachineInitializedSignature OnPreStateMachineInitializedEvent
FOnStateMachineInitializedSignature OnStateMachineInitializedEvent
FOnStateMachineStartedSignature OnStateMachineStartedEvent
FOnStateMachineUpdatedSignature OnStateMachineUpdatedEvent
FOnStateMachineStoppedSignature OnStateMachineStoppedEvent
FOnStateMachineShutdownSignature OnStateMachineShutdownEvent
FOnStateMachineTransitionTakenSignature OnStateMachineTransitionTakenEvent
FOnStateMachineStateChangedSignature OnStateMachineStateChangedEvent
FOnStateMachineStateStartedSignature OnStateMachineStateStartedEvent
TArray< TObjectPtr< UObject > > ReferenceTemplates

Protected Attributes¶

Friends¶

Public Functions Documentation¶

function USMInstance¶

USMInstance()

function Tick¶

void Tick(
    float DeltaTime
) override

images/classes/SMInstance/img/nd_img_Tick.png

The native tick is required to update the state machine.


function IsTickable¶

virtual bool IsTickable() const override

images/classes/SMInstance/img/nd_img_IsTickable.png


function IsTickableInEditor¶

virtual bool IsTickableInEditor() const override

function GetTickableTickType¶

virtual ETickableTickType GetTickableTickType() const override

function IsTickableWhenPaused¶

inline virtual bool IsTickableWhenPaused() const override

images/classes/SMInstance/img/nd_img_IsTickableWhenPaused.png


function GetTickableGameObjectWorld¶

virtual UWorld * GetTickableGameObjectWorld() const override

function GetStatId¶

virtual TStatId GetStatId() const override

function IsSupportedForNetworking¶

inline virtual bool IsSupportedForNetworking() const override

function GetLifetimeReplicatedProps¶

virtual void GetLifetimeReplicatedProps(
    TArray< FLifetimeProperty > & OutLifetimeProps
) const override

function BeginDestroy¶

virtual void BeginDestroy() override

function GetWorld¶

virtual UWorld * GetWorld() const override

function GetFunctionCallspace¶

virtual int32 GetFunctionCallspace(
    UFunction * Function,
    FFrame * Stack
) override

function CallRemoteFunction¶

virtual bool CallRemoteFunction(
    UFunction * Function,
    void * Parms,
    FOutParmRec * OutParms,
    FFrame * Stack
) override

function Serialize¶

virtual void Serialize(
    FArchive & Ar
) override

function GetContext¶

virtual UObject * GetContext() const override

images/classes/SMInstance/img/nd_img_GetContext.png

The object which this state machine is running for.


function GetComponentOwner¶

inline USMStateMachineComponent * GetComponentOwner() const

images/classes/SMInstance/img/nd_img_GetComponentOwner.png

The component owning this instance. Will be null during initialization or if this state machine was created without a component.


function SetComponentOwner¶

void SetComponentOwner(
    USMStateMachineComponent * InComponent
)

Override the component owner. Should not be necessary to ever call unless you have a custom component which is managing initialization or replication.


function Initialize¶

virtual void Initialize(
    UObject * Context
) override

images/classes/SMInstance/img/nd_img_Initialize.png

Prepare the state machine for use.

Parameters:

Context
The context to use for the state machine.

function Start¶

virtual void Start() override

images/classes/SMInstance/img/nd_img_Start.png

Start the root state machine. This is a local call only and is not replicated.


function Update¶

virtual void Update(
    float DeltaSeconds =0.f
) override

images/classes/SMInstance/img/nd_img_Update.png

Manual way of updating the root state machine if tick is disabled.


function Stop¶

virtual void Stop() override

images/classes/SMInstance/img/nd_img_Stop.png

Complete the state machine's current state and force the machine to end regardless of if the state is an end state. This is a local call only and is not replicated.


function Restart¶

virtual void Restart() override

images/classes/SMInstance/img/nd_img_Restart.png

Forcibly restart the state machine and place it back into an entry state. This is a local call only and is not replicated.


function Shutdown¶

virtual void Shutdown() override

images/classes/SMInstance/img/nd_img_Shutdown.png

Shutdown this instance. Calls Stop(). Must call Initialize() again before use. If the goal is to restart the state machine later call Stop() instead.


function ReplicatedStart¶

void ReplicatedStart()

images/classes/SMInstance/img/nd_img_ReplicatedStart.png

Calls Start() locally or on the component owner if valid.


function ReplicatedStop¶

void ReplicatedStop()

images/classes/SMInstance/img/nd_img_ReplicatedStop.png

Calls Stop() locally or on the component owner if valid.


function ReplicatedRestart¶

void ReplicatedRestart()

images/classes/SMInstance/img/nd_img_ReplicatedRestart.png

Calls Restart() locally or on the component owner if valid.


function StartWithNewContext¶

void StartWithNewContext(
    UObject * Context
)

images/classes/SMInstance/img/nd_img_StartWithNewContext.png

Sets a new context and starts the state machine. The state machine should be stopped prior to calling.


function EvaluateTransitions¶

void EvaluateTransitions()

images/classes/SMInstance/img/nd_img_EvaluateTransitions.png

Signals to the owning state machine to process transition evaluation. This is similar to calling Update on the owner root state machine, however state update logic (Tick) won't execute. All transitions are evaluated as normal starting from the root state machine down. Depending on super state transitions it's possible the state machine this state is part of may exit.


function EvaluateAndTakeTransitionChain¶

bool EvaluateAndTakeTransitionChain(
    USMTransitionInstance * InFirstTransitionInstance
)

images/classes/SMInstance/img/nd_img_EvaluateAndTakeTransitionChain.png

Evaluate an entire transition chain discovering the path to take. If an entire chain passes then switch to the destination state.

A transition chain is the first path that evaluates to true between two states, consisting of all transitions and conduits that are configured to eval with transitions.

This method fails if the state machine isn't state change authoritative. The destination state won't become active if this state machine doesn't have local state change authority.

If the method passes each transition taken will be replicated in order.

This method is for advanced usage and not required for normal operation.

Parameters:

InFirstTransitionInstance
The transition instance, which should be the first part of a transition chain.

Return: True if the chain succeeded evaluation.


function EvaluateAndTakeTransitionChain¶

bool EvaluateAndTakeTransitionChain(
    FSMTransition & InFirstTransition
)

function EvaluateAndFindTransitionChain¶

bool EvaluateAndFindTransitionChain(
    USMTransitionInstance * InFirstTransitionInstance,
    TArray< USMTransitionInstance * > & OutTransitionChain,
    USMStateInstance_Base *& OutDestinationState,
    bool bRequirePreviousStateActive =true
)

images/classes/SMInstance/img/nd_img_EvaluateAndFindTransitionChain.png

Evaluate an entire transition chain discovering the path to take. This will not switch states or take the transition chain. It will only discover the first valid transition chain at the moment of execution.

A transition chain is the first path that evaluates to true between two states, consisting of all transitions and conduits that are configured to eval with transitions. In many cases it is of size 0 or 1.

This should only be used for conditional (tick) evaluation. If an event has triggered a transition but the state machine has not taken it yet, this method may clear the event status preventing the transition from being taken natively.

If the transition chain returned should be taken, use TakeTransitionChain().

This method is for advanced usage and not required for normal operation.

Parameters:

InFirstTransitionInstance
The transition instance, which should be the first part of a transition chain.
OutTransitionChain
The first valid transition chain where every node has evaluated to true. Only transitions are returned.
OutDestinationState
The destination state at the end of the chain.
bRequirePreviousStateActive
If the previous state is not active then cancel evaluation.

Return: True if a valid transition chain was found.


function TakeTransitionChain¶

bool TakeTransitionChain(
    const TArray< USMTransitionInstance * > & InTransitionChain
)

images/classes/SMInstance/img/nd_img_TakeTransitionChain.png

Tell the state machine to take a specific transition chain. The chain is assumed to be true and will not be evaluated. There is no integrity checking to make sure the chain properly connects two states. All other state change behavior is respected including requiring the previous state active.

This method is for advanced usage and not required for normal operation.

Parameters:

InTransitionChain
The transition chain to be taken consisting of transitions and conduits.

Return: True if the chain was taken and the state switched.


function PreloadAllNodeInstances¶

void PreloadAllNodeInstances()

images/classes/SMInstance/img/nd_img_PreloadAllNodeInstances.png

Ensure all default node instances are loaded into memory. Default node classes are normally loaded on demand to save on memory and initialization time. Preloading isn't necessary unless most default nodes need to be accessed programatically, such as calling GetNodeInstance() from a local state graph.

This has no effect on nodes assigned a custom node class.


function ActivateStateLocally¶

void ActivateStateLocally(
    const FGuid & StateGuid,
    bool bActive,
    bool bSetAllParents,
    bool bActivateNow =true
)

Activate or deactivate a single state locally. This call is not replicated. Use the SetActive method from the state instance to allow replication.

Parameters:

StateGuid
The guid of the specific state to activate.
bActive
Add or remove the state from the owning state machine's active states.
bSetAllParents
Sets the active state of all super state machines. A parent state machine won't be deactivated unless there are no other states active.
bActivateNow
If the state is becoming active it will run OnStateBegin this tick. If this is false it will run on the next update cycle.

function SwitchActiveState¶

void SwitchActiveState(
    USMStateInstance_Base * NewStateInstance,
    bool bDeactivateOtherStates =true
)

images/classes/SMInstance/img/nd_img_SwitchActiveState.png

Switch the activate state. Does not take any transition. Handles replication and requires state change authority.

Parameters:

NewStateInstance
The state to switch to. Null is accepted if you wish to deactivate all other states.
bDeactivateOtherStates
If other states should be deactivated first. A state won't be deactivated if it is a super state machine to the new state.

function SwitchActiveStateByQualifiedName¶

void SwitchActiveStateByQualifiedName(
    const FString & InFullPath,
    bool bDeactivateOtherStates =true
)

images/classes/SMInstance/img/nd_img_SwitchActiveStateByQualifiedName.png

Switch to a state instance by its fully qualified name in a state machine blueprint. Does not take any transition. Handles replication and requires state change authority.

A top level state name of "Locomotion" would be found by searching "Locomotion". A nested state of name "Jump" within a "Locomotion" state machine would be found by "Locomotion.Jump".

It is not necessary to include the "Root" state machine node in the search.

The search is performed iteratively and the performance is roughly O(n) by number of nodes in the path. The lookup of each state is O(1).

Parameters:

InFullPath
The full path to the node. When the state machine type is known a UI dropdown is available. Cast the target and refresh the node to update the UI.
bDeactivateOtherStates
If other states should be deactivated first. A state won't be deactivated if it is a super state machine to the new state.

function HasPendingActiveStates¶

inline bool HasPendingActiveStates() const

If there are states that need their active state changed.


function IsUpdating¶

inline bool IsUpdating() const

If this state machine instance is in an update cycle.


function IsStopping¶

inline bool IsStopping() const

images/classes/SMInstance/img/nd_img_IsStopping.png

If the state machine instance is currently in the process of stopping. This will also be true if the state machine was stopped via bStopOnEndState.


function LoadFromState¶

void LoadFromState(
    const FGuid & FromGuid,
    bool bAllParents =true,
    bool bNotify =true
)

images/classes/SMInstance/img/nd_img_LoadFromState.png

Sets a temporary initial state of the guid's owning state machine. When the state machine starts it will default to this state. With AllParents to true this is useful for restoring a single active state of a state machine from GetSingleActiveStateGuid(). If there are multiple active states, or the state of non active sub state machines is important use LoadFromMultipleStates() instead.

This should only be called on an initialized state machine that is stopped.

When using with replication this should be called from the server, or from a client that has state change authority.

Parameters:

FromGuid
The state guid to load.
bAllParents
Recursively set the initial state of all parent state machines.
bNotify
Calls OnStateMachineInitialStateLoaded on this instance and sets AreInitialStatesSetFromLoad().

function LoadFromMultipleStates¶

void LoadFromMultipleStates(
    const TArray< FGuid > & FromGuids,
    bool bNotify =true
)

images/classes/SMInstance/img/nd_img_LoadFromMultipleStates.png

Set all owning parents' temporary initial state to the given guids. Useful for restoring multiple states within a state machine. Best used when restoring from GetAllActiveStateGuids(). When the state machine starts it will default to these states.

This should only be called on an initialized state machine that is stopped.

When using with replication this should be called from the server, or from a client that has state change authority.

Parameters:

FromGuids
Array of state guids to load.
bNotify
Calls OnStateMachineInitialStateLoaded on this instance and sets AreInitialStatesSetFromLoad().

function AreInitialStatesSetFromLoad¶

inline bool AreInitialStatesSetFromLoad() const

images/classes/SMInstance/img/nd_img_AreInitialStatesSetFromLoad.png

Checks if initial entry states have been set through LoadFromState() or LoadFromMultipleStates(). This will be true if at least one state was loaded this way and will become false once Stop() is called.

In a replicated environment this is only accurate when called from the machine that performed the initial load.


function ClearLoadedStates¶

void ClearLoadedStates()

images/classes/SMInstance/img/nd_img_ClearLoadedStates.png

Clear all temporary initial states loaded through LoadFromState(). Do not use while the state machine is active and replicated.


function InitializeAsync¶

void InitializeAsync(
    UObject * Context,
    const FOnStateMachineInstanceInitializedAsync & OnCompletedDelegate =FOnStateMachineInstanceInitializedAsync()
)

Prepare the state machine for use on a separate thread. If this object needs to be destroyed before the process completes you should call Shutdown() or CancelAsyncInitialization() to attempt to safely exit the thread.

Parameters:

Context
The context to use for the state machine.
OnCompletedDelegate
A callback delegate for when initialization completes. This only will fire if initialization was a success.

function K2_InitializeAsync¶

void K2_InitializeAsync(
    UObject * Context,
    FLatentActionInfo LatentInfo
)

images/classes/SMInstance/img/nd_img_K2_InitializeAsync.png

Prepare the state machine for use on a separate thread. If this object needs to be destroyed before the process completes you should call Shutdown() or CancelAsyncInitialization() to attempt to safely exit the thread.

Parameters:

Context
The context to use for the state machine. This object must have a valid world assigned for a latent task to process correctly.

function CancelAsyncInitialization¶

void CancelAsyncInitialization()

images/classes/SMInstance/img/nd_img_CancelAsyncInitialization.png

Attempt to cancel the async initialization task.


function WaitForAsyncInitializationTask¶

void WaitForAsyncInitializationTask(
    bool bCallFinishInitialize =true
)

images/classes/SMInstance/img/nd_img_WaitForAsyncInitializationTask.png

Wait blocking for the async task to complete. The object may not be fully initialized after this as FinishInitialize must occur on the game thread and is scheduled to run through Unreal's task graph system.

Code that should execute after initialization is completed ideally should be done through the call back of InitializeAsync(). However, if bCallFinishInitialize is set, it should be safe to execute code on this instance after this call. Check IsInitialized() to validate the instance has successfully initialized.

Parameters:

bCallFinishInitialize
Call FinishInitialize immediately after the task completes if required on this thread. (Only valid if on GameThread)

function TryGetNestedActiveState¶

void TryGetNestedActiveState(
    FSMStateInfo & FoundState,
    bool & bSuccess
) const

images/classes/SMInstance/img/nd_img_TryGetNestedActiveState.png

Retrieve the lowest level single active state including all nested state machines. Returns read only information.


function GetSingleActiveState¶

FSMState_Base * GetSingleActiveState() const

Return the current top level active state. Do not use if there are multiple active states.

Return: null or the first active top level state.


function GetSingleNestedActiveState¶

FSMState_Base * GetSingleNestedActiveState() const

Retrieve the first lowest level active state including all nested state machines. Do not use if there are multiple active states.

Return: null or the first active state.


function GetAllActiveStates¶

TArray< FSMState_Base * > GetAllActiveStates() const

Recursively retrieve all active states.


function GetSingleActiveStateGuid¶

FGuid GetSingleActiveStateGuid(
    bool bCheckNested =true
) const

images/classes/SMInstance/img/nd_img_GetSingleActiveStateGuid.png

Retrieve the first active state Guid. If a state is not active an invalid Guid will be returned. For multiple states GetAllActiveStateGuids() should be called instead.

Parameters:

bCheckNested
Check nested state machines.

Return: the first active state guid.


function GetAllActiveStateGuids¶

void GetAllActiveStateGuids(
    TArray< FGuid > & ActiveGuids
) const

images/classes/SMInstance/img/nd_img_GetAllActiveStateGuids.png

Recursively retrieve the guids of all active states. Useful if saving the current state of a state machine.

Parameters:

ActiveGuids
[Out] All current ActiveGuids. May be empty. Resets on method start.

function GetAllActiveStateGuidsCopy¶

TArray< FGuid > GetAllActiveStateGuidsCopy() const

Convenience method wrapper for GetAllActiveStateGuids().

Recursively retrieve the guids of all active states. Useful if saving the current state of a state machine.

Return: All current ActiveGuids. May be empty.


function GetSingleActiveStateInstance¶

USMStateInstance_Base * GetSingleActiveStateInstance(
    bool bCheckNested =true
) const

images/classes/SMInstance/img/nd_img_GetSingleActiveStateInstance.png

Locate the first active state instance. For multiple states GetAllActiveStateInstances() should be called instead.

Parameters:

bCheckNested
Check nested state machines.

Return: A single active state's node instance.


function GetAllActiveStateInstances¶

void GetAllActiveStateInstances(
    TArray< USMStateInstance_Base * > & ActiveStateInstances
) const

images/classes/SMInstance/img/nd_img_GetAllActiveStateInstances.png

Recursively retrieve all active state instances.

Parameters:

ActiveStateInstances
[Out] All active state instances. May be empty. Resets on method start.

function GetAllReferencedInstances¶

TArray< USMInstance * > GetAllReferencedInstances(
    bool bIncludeChildren =false
) const

images/classes/SMInstance/img/nd_img_GetAllReferencedInstances.png

Find all referenced instances. IncludeChildren will return all nested state machine references.


function GetStateMachinesWithReferences¶

TArray< FSMStateMachine * > GetStateMachinesWithReferences(
    bool bIncludeChildren =false
) const

Find all internal state machine structs which contain references.


function TryGetStateInfo¶

void TryGetStateInfo(
    const FGuid & Guid,
    FSMStateInfo & StateInfo,
    bool & bSuccess
) const

images/classes/SMInstance/img/nd_img_TryGetStateInfo.png

Quickly returns read only information of the state belonging to the given guid. This always executes from the primary instance.


function TryGetTransitionInfo¶

void TryGetTransitionInfo(
    const FGuid & Guid,
    FSMTransitionInfo & TransitionInfo,
    bool & bSuccess
) const

images/classes/SMInstance/img/nd_img_TryGetTransitionInfo.png

Quickly returns read only information of the transition belonging to the given guid. This always executes from the primary instance.


function GetReferencedInstanceByGuid¶

USMInstance * GetReferencedInstanceByGuid(
    const FGuid & Guid
) const

images/classes/SMInstance/img/nd_img_GetReferencedInstanceByGuid.png

Quickly return a referenced instance given a state machine guid. This always executes from the primary instance.


function GetStateInstanceByGuid¶

USMStateInstance_Base * GetStateInstanceByGuid(
    const FGuid & Guid
) const

images/classes/SMInstance/img/nd_img_GetStateInstanceByGuid.png

Quickly return a state instance given the state guid. This always executes from the primary instance.


function GetTransitionInstanceByGuid¶

USMTransitionInstance * GetTransitionInstanceByGuid(
    const FGuid & Guid
) const

images/classes/SMInstance/img/nd_img_GetTransitionInstanceByGuid.png

Quickly return a transition instance given a transition guid. This always executes from the primary instance.


function GetNodeInstanceByGuid¶

USMNodeInstance * GetNodeInstanceByGuid(
    const FGuid & Guid
) const

images/classes/SMInstance/img/nd_img_GetNodeInstanceByGuid.png

Quickly return any type of node instance. These could be transitions or states. This always executes from the primary instance.


function GetStateInstanceByQualifiedName¶

USMStateInstance_Base * GetStateInstanceByQualifiedName(
    const FString & InFullPath
) const

images/classes/SMInstance/img/nd_img_GetStateInstanceByQualifiedName.png

Return a state instance by its fully qualified name in a state machine blueprint. A top level state name of "Locomotion" would be found by searching "Locomotion". A nested state of name "Jump" within a "Locomotion" state machine would be found by "Locomotion.Jump".

It is not necessary to include the "Root" state machine node in the search.

The search is performed iteratively and the performance is roughly O(n) by number of nodes in the path. The lookup of each state is O(1).

Parameters:

InFullPath
The full path to the node. When the state machine type is known a UI dropdown is available. Cast the target and refresh the node to update the UI.

function GetStateByGuid¶

FSMState_Base * GetStateByGuid(
    const FGuid & Guid
) const

Quick lookup of a state by guid. Includes all nested.


function GetTransitionByGuid¶

FSMTransition * GetTransitionByGuid(
    const FGuid & Guid
) const

Quick lookup of any transition by guid. Includes all nested.


function GetNodeByGuid¶

FSMNode_Base * GetNodeByGuid(
    const FGuid & Guid
) const

Quick lookup of any node by guid. Includes all nested.


function FindStateByGuid¶

FSMState_Base * FindStateByGuid(
    const FGuid & Guid
) const

Linear search all state machines for a contained node.


function GetGuidRedirectMap¶

inline TMap< FGuid, FGuid > & GetGuidRedirectMap()

images/classes/SMInstance/img/nd_img_GetGuidRedirectMap.png

A map of path guids which should be redirected to other path guids.


function SetGuidRedirectMap¶

inline void SetGuidRedirectMap(
    const TMap< FGuid, FGuid > & InGuidMap
)

images/classes/SMInstance/img/nd_img_SetGuidRedirectMap.png

Directly set the guid redirect map.


function GetRedirectedGuid¶

FGuid GetRedirectedGuid(
    const FGuid & InPathGuid
) const

Find a redirected path guid.

Parameters:

InPathGuid
The old path guid which should point to a new guid.

Return: The redirected guid, or the original guid.


function GetRootStateMachine¶

inline FSMStateMachine & GetRootStateMachine()

The root state machine which may contain nested state machines.


function GetRootStateMachineNodeInstance¶

USMStateMachineInstance * GetRootStateMachineNodeInstance() const

images/classes/SMInstance/img/nd_img_GetRootStateMachineNodeInstance.png

Return the root USMStateMachineInstance node.

This is relative to the SMInstance you are calling it from. If this is a state machine reference it will return the reference's root state machine node instance.

To retrieve the primary root state machine node instance, call this method from GetPrimaryReferenceOwner().


function IsActive¶

bool IsActive() const

images/classes/SMInstance/img/nd_img_IsActive.png


function CanEverTick¶

inline bool CanEverTick() const

images/classes/SMInstance/img/nd_img_CanEverTick.png


function SetCanEverTick¶

void SetCanEverTick(
    bool Value
)

images/classes/SMInstance/img/nd_img_SetCanEverTick.png

Set the conditional tick state. If false IsTickable() will return false. This will also update the component owner network settings if this call is made from the primary instance.


function IsTickRegistered¶

inline bool IsTickRegistered() const

If the tick function has been registered.


function SetRegisterTick¶

void SetRegisterTick(
    bool Value
)

When false prevents the tick function from ever being registered. Can only be called along with initialize and cannot be changed.


function SetTickOnManualUpdate¶

void SetTickOnManualUpdate(
    bool Value
)

images/classes/SMInstance/img/nd_img_SetTickOnManualUpdate.png


function CanTickOnManualUpdate¶

inline bool CanTickOnManualUpdate() const

images/classes/SMInstance/img/nd_img_CanTickOnManualUpdate.png


function SetCanTickWhenPaused¶

void SetCanTickWhenPaused(
    bool Value
)

images/classes/SMInstance/img/nd_img_SetCanTickWhenPaused.png


function SetCanTickInEditor¶

void SetCanTickInEditor(
    bool Value
)

function SetTickBeforeBeginPlay¶

void SetTickBeforeBeginPlay(
    bool Value
)

images/classes/SMInstance/img/nd_img_SetTickBeforeBeginPlay.png


function SetTickInterval¶

void SetTickInterval(
    float Value
)

images/classes/SMInstance/img/nd_img_SetTickInterval.png

Time in seconds between native ticks. This mostly affects the "Update" rate of the state machine. Overloaded Ticks won't be affected.


function SetAutoManageTime¶

void SetAutoManageTime(
    bool Value
)

images/classes/SMInstance/img/nd_img_SetAutoManageTime.png


function CanAutoManageTime¶

inline bool CanAutoManageTime() const

images/classes/SMInstance/img/nd_img_CanAutoManageTime.png


function GetTickInterval¶

inline float GetTickInterval() const

images/classes/SMInstance/img/nd_img_GetTickInterval.png


function SetStopOnEndState¶

void SetStopOnEndState(
    bool Value
)

images/classes/SMInstance/img/nd_img_SetStopOnEndState.png


function GetStopOnEndState¶

inline bool GetStopOnEndState() const

images/classes/SMInstance/img/nd_img_GetStopOnEndState.png


function IsInEndState¶

bool IsInEndState() const

images/classes/SMInstance/img/nd_img_IsInEndState.png

True if the root state machine is in an end state.


function SetContext¶

void SetContext(
    UObject * Context
)

images/classes/SMInstance/img/nd_img_SetContext.png

Sets a new context.


function GetNodeMap¶

const TMap< FGuid, FSMNode_Base * > & GetNodeMap() const

Get all mapped PathGuids to nodes.


function GetStateMap¶

const TMap< FGuid, FSMState_Base * > & GetStateMap() const

Get all mapped PathGuids to states.


function GetTransitionMap¶

const TMap< FGuid, FSMTransition * > & GetTransitionMap() const

Get all mapped PathGuids to transitions.


function GetStateHistory¶

const TArray< FSMStateHistory > & GetStateHistory() const

images/classes/SMInstance/img/nd_img_GetStateHistory.png

Retrieve an ordered history of states, oldest to newest, not including active state(s). This always executes from the primary instance.


function SetStateHistoryMaxCount¶

void SetStateHistoryMaxCount(
    int32 NewSize
)

images/classes/SMInstance/img/nd_img_SetStateHistoryMaxCount.png

Sets the maximum number of states to record into history. Resizes the array removing older entries if needed.

Parameters:

NewSize
The number of states to record. Set to -1 for no limit.

function GetStateHistoryMaxCount¶

int32 GetStateHistoryMaxCount() const

images/classes/SMInstance/img/nd_img_GetStateHistoryMaxCount.png

Return the maximum history count.


function ClearStateHistory¶

void ClearStateHistory()

images/classes/SMInstance/img/nd_img_ClearStateHistory.png

Empty the state history array.


function GetAllStateInstances¶

void GetAllStateInstances(
    TArray< USMStateInstance_Base * > & StateInstances
) const

images/classes/SMInstance/img/nd_img_GetAllStateInstances.png

Retrieve all state instances throughout the entire state machine blueprint. These can be states, state machines, and conduits.

This includes all nested states in sub state machines and references. This does not include State Stack instances.

To retrieve only top level states call GetRootStateMachineNodeInstance() and from there call 'GetAllStateInstances'.


function GetAllTransitionInstances¶

void GetAllTransitionInstances(
    TArray< USMTransitionInstance * > & TransitionInstances
) const

images/classes/SMInstance/img/nd_img_GetAllTransitionInstances.png

Retrieve all transition instances throughout the entire state machine blueprint.

This includes all transitions nested in sub state machines and references. This does not include Transition Stack instances.


function SetNetworkInterface¶

void SetNetworkInterface(
    TScriptInterface< ISMStateMachineNetworkedInterface > InNetworkInterface
)

Notifies this instance there is a server interface.


function GetNetworkInterface¶

TScriptInterface< ISMStateMachineNetworkedInterface > GetNetworkInterface() const

images/classes/SMInstance/img/nd_img_GetNetworkInterface.png

Return the server interface if there is one. This may be null. Always executes from the primary instance.


function K2_TryGetNetworkInterface¶

void K2_TryGetNetworkInterface(
    TScriptInterface< ISMStateMachineNetworkedInterface > & Interface,
    bool & bIsValid
)

images/classes/SMInstance/img/nd_img_K2_TryGetNetworkInterface.png

Return the server interface if there is one. This may be null. Always executes from the primary instance.


function TryGetNetworkInterface¶

ISMStateMachineNetworkedInterface * TryGetNetworkInterface() const

Return the network interface if it set and if networking is enabled. Always executes from the primary instance.


function UpdateNetworkConditions¶

void UpdateNetworkConditions()

Updates all needed nodes with the current network conditions. Best to be called after Initialization and before Start.


function CopyNetworkConditionsFrom¶

void CopyNetworkConditionsFrom(
    USMInstance * OtherInstance,
    bool bUpdateNodes =false
)

Copy network settings from the other instance.


function SetAllowTransitionsLocally¶

void SetAllowTransitionsLocally(
    bool bCanEvaluateTransitions,
    bool bCanTakeTransitions
)

Notifies state machines they are allowed to take transitions locally.

Parameters:

bCanEvaluateTransitions
If a state machine can check transition results.
bCanTakeTransitions
If a state machine can take a transition after evaluating it.

function SetAllowStateLogic¶

void SetAllowStateLogic(
    bool bAllow
)

Notifies state machines if they are allowed to execute state logic locally.


function HasStarted¶

inline bool HasStarted() const

images/classes/SMInstance/img/nd_img_HasStarted.png

True if the instance has started.


function IsInitialized¶

inline bool IsInitialized() const

images/classes/SMInstance/img/nd_img_IsInitialized.png

If this instance is fully initialized.


function IsInitializingAsync¶

inline bool IsInitializingAsync() const

images/classes/SMInstance/img/nd_img_IsInitializingAsync.png

True only during async initialization.


function IsReferenceTemplate¶

bool IsReferenceTemplate() const

If this is an archetype object used as custom defaults for a reference.


function SetReferenceOwner¶

void SetReferenceOwner(
    USMInstance * Owner
)

Notify this instance is a reference owned by another instance.


function AddReplicatedReference¶

void AddReplicatedReference(
    const FGuid & PathGuid,
    USMInstance * NewReference
)

Record a reference to be replicated to the client.


function AddReplicatedNodeInstance¶

void AddReplicatedNodeInstance(
    const FGuid & PathGuid,
    uint8 StackIndex,
    USMNodeInstance * NewNodeInstance
)

Record a node instance to be replicated to the client.

Parameters:

PathGuid
The path guid the node is under.
StackIndex
The stack index. This counts the main instance as stack 0, with real stack items offset by 1.
NewNodeInstance
The node instance to replicate.

function FindReplicatedReference¶

USMInstance * FindReplicatedReference(
    const FGuid & PathGuid
) const

Find a replicated reference by its path guid.


function FindReplicatedNodeInstance¶

USMNodeInstance * FindReplicatedNodeInstance(
    const FGuid & PathGuid,
    uint8 StackIndex
)

Find a replicated node instance.

Parameters:

PathGuid
The path guid the node is under.
StackIndex
The stack index. This counts the main instance as stack 0, with real stack items offset by 1.

function GetReplicatedReferences¶

inline const TArray< FSMReferenceContainer > & GetReplicatedReferences() const

Return all references set to be replicated.


function GetReplicatedNodeInstances¶

inline const TArray< FSMNodeInstanceContainer > & GetReplicatedNodeInstances() const

Return all node instances set to be/have been replicated.


function HaveAllSubObjectsReplicated¶

bool HaveAllSubObjectsReplicated() const

Checks if all required subobjects have finished replicating.


function HaveAllReferencesReplicated¶

bool HaveAllReferencesReplicated() const

Checks if all references on the primary instance have been received.


function HaveAllNodeInstancesReplicated¶

bool HaveAllNodeInstancesReplicated() const

Checks if all node instances have replicated.


function CanReplicateAsReference¶

bool CanReplicateAsReference() const

If this instance is allowed to replicate if it is a reference.


function CanReplicateNodeInstances¶

bool CanReplicateNodeInstances() const

If this instance can replicate its node instances.


function ShouldLookUpReplicatedNodeInstance¶

bool ShouldLookUpReplicatedNodeInstance() const

If we're a client expecting replicated node instances.


function GetReferenceOwnerConst¶

inline const USMInstance * GetReferenceOwnerConst() const

Get the instance owning this reference. If null this is not a reference.


function GetPrimaryReferenceOwnerConst¶

const USMInstance * GetPrimaryReferenceOwnerConst() const

Look up the owners to find the top-most instance.


function IsPrimaryReferenceOwner¶

inline bool IsPrimaryReferenceOwner() const

Check if this is the top most instance.


function GetReferenceOwner¶

inline USMInstance * GetReferenceOwner() const

images/classes/SMInstance/img/nd_img_GetReferenceOwner.png

Get the instance owning this reference. If null this is not a reference.


function GetPrimaryReferenceOwner¶

USMInstance * GetPrimaryReferenceOwner()

images/classes/SMInstance/img/nd_img_GetPrimaryReferenceOwner.png

Look up the owners to find the top-most instance. Could be this instance.


function GetRootStateMachineNodeClass¶

inline TSubclassOf< USMStateMachineInstance > GetRootStateMachineNodeClass() const

images/classes/SMInstance/img/nd_img_GetRootStateMachineNodeClass.png

The custom state machine node class assigned to the root state machine node.


function GetStateMachineClass¶

inline TSubclassOf< USMStateMachineInstance > GetStateMachineClass() const

Deprecated:

Use GetRootStateMachineNodeClass() instead.


function SetRootStateMachineNodeClass¶

inline void SetRootStateMachineNodeClass(
    TSubclassOf< USMStateMachineInstance > NewStateMachineNodeClass
)

images/classes/SMInstance/img/nd_img_SetRootStateMachineNodeClass.png

Sets the root state machine node class.

Parameters:

NewStateMachineNodeClass
The state machine node class to set.

function SetStateMachineClass¶

inline void SetStateMachineClass(
    TSubclassOf< USMStateMachineInstance > NewStateMachineClass
)

Deprecated:

Use SetRootStateMachineNodeClass() instead.


function OnPreStateMachineInitialized¶

void OnPreStateMachineInitialized()

images/classes/SMInstance/img/nd_img_OnPreStateMachineInitialized.png

Called at the beginning of Initialize(). Most information will not be available at this stage other than the context.

Warning:

When using async initialization this does not run on the game thread. Make sure your code is thread safe!


function OnStateMachineInitialized¶

void OnStateMachineInitialized()

images/classes/SMInstance/img/nd_img_OnStateMachineInitialized.png

Called when the instance is first initialized.


function OnStateMachineStart¶

void OnStateMachineStart()

images/classes/SMInstance/img/nd_img_OnStateMachineStart.png

Called right before the root state machine starts its initial state.


function OnStateMachineUpdate¶

void OnStateMachineUpdate(
    float DeltaSeconds
)

images/classes/SMInstance/img/nd_img_OnStateMachineUpdate.png

Called right before the root state machine updates.


function OnStateMachineStop¶

void OnStateMachineStop()

images/classes/SMInstance/img/nd_img_OnStateMachineStop.png

Called right after the instance has been stopped.


function OnStateMachineShutdown¶

void OnStateMachineShutdown()

images/classes/SMInstance/img/nd_img_OnStateMachineShutdown.png

Called right after the instance has been shutdown. This will not fire if this object is being destroyed.


function OnStateMachineTransitionTaken¶

void OnStateMachineTransitionTaken(
    const FSMTransitionInfo & Transition
)

images/classes/SMInstance/img/nd_img_OnStateMachineTransitionTaken.png

Called when a transition has evaluated to true and is being taken.


function OnStateMachineStateChanged¶

void OnStateMachineStateChanged(
    const FSMStateInfo & ToState,
    const FSMStateInfo & FromState
)

images/classes/SMInstance/img/nd_img_OnStateMachineStateChanged.png

Called when a state machine has switched states.


function OnStateMachineStateStarted¶

void OnStateMachineStateStarted(
    const FSMStateInfo & State
)

images/classes/SMInstance/img/nd_img_OnStateMachineStateStarted.png

Called when a state has started. This happens after OnStateMachineStateChanged and all previous transitions have evaluated.


function NotifyTransitionTaken¶

void NotifyTransitionTaken(
    const FSMTransition & Transition
)

Send transition events.


function NotifyStateChange¶

void NotifyStateChange(
    FSMState_Base * ToState,
    FSMState_Base * FromState
)

Send state change events.


function NotifyStateStarted¶

void NotifyStateStarted(
    const FSMState_Base & State
)

Send state started events.


function GetDebugStateMachine¶

inline FSMDebugStateMachine & GetDebugStateMachine()

function GetDebugStateMachineConst¶

inline const FSMDebugStateMachine & GetDebugStateMachineConst() const

function IsLoggingEnabled¶

inline bool IsLoggingEnabled() const

function RunUpdateAsReference¶

void RunUpdateAsReference(
    float DeltaSeconds
)

Call from an FSM reference. Avoids the update cancelling out if already in progress and keeps behavior consistent with normal nested FSMs.


function GetInputType¶

inline TEnumAsByte< ESMStateMachineInput::Type > GetInputType() const

Input. images/classes/SMInstance/img/nd_img_GetInputType.png

Get the AutoReceiveInput type.


function GetInputPriority¶

inline int32 GetInputPriority() const

images/classes/SMInstance/img/nd_img_GetInputPriority.png

Get the input priority.


function GetBlockInput¶

inline bool GetBlockInput() const

images/classes/SMInstance/img/nd_img_GetBlockInput.png

Get the block input value.


function GetInputController¶

APlayerController * GetInputController() const

images/classes/SMInstance/img/nd_img_GetInputController.png

Attempt to find a valid player controller for this state machine. Requires input enabled and may return null.


function SetAutoReceiveInput¶

void SetAutoReceiveInput(
    ESMStateMachineInput::Type InInputType
)

images/classes/SMInstance/img/nd_img_SetAutoReceiveInput.png

Sets the auto receive input functionality. Should be done prior to initialization.


function SetInputPriority¶

void SetInputPriority(
    int32 InInputPriority
)

images/classes/SMInstance/img/nd_img_SetInputPriority.png

Sets the input priority. Should be done prior to initialization.


function SetBlockInput¶

void SetBlockInput(
    bool bNewValue
)

images/classes/SMInstance/img/nd_img_SetBlockInput.png

Sets the input priority. Should be done prior to initialization.


function GetInputComponent¶

inline UInputComponent * GetInputComponent() const

images/classes/SMInstance/img/nd_img_GetInputComponent.png

Retrieve the input component this state machine created with AutoReceiveInput. The input component will only be valid if AutoReceiveInput is not disabled and this state machine is initialized.

Return: The UInputComponent or nullptr.


function SetManualInputController¶

void SetManualInputController(
    APlayerController * InController =nullptr
)

images/classes/SMInstance/img/nd_img_SetManualInputController.png

Enable input for this state machine instance with a specific controller.

AutoReceiveInput Needs to be set to UseManualController either in the details panel or from calling SetAutoReceiveInput().

Parameters:

InController
The player controller which should handle input.

Note:

This call is not replicated.


function GetRootPathGuidCache¶

const TMap< FGuid, FSMGuidMap > & GetRootPathGuidCache() const

Retrieve the guid cache of all root FSMs and their contained nodes.


function SetRootPathGuidCache¶

void SetRootPathGuidCache(
    const TMap< FGuid, FSMGuidMap > & InGuidCache
)

Update the guid cache.


function GetCachedPropertyData¶

TSharedPtr< FSMCachedPropertyData, ESPMode::ThreadSafe > GetCachedPropertyData()

Retrieve the cached property data which is only needed during initialization. If called after initialization the cache may be recalculated.


function GetGeneratedSubObjectTemplates¶

const TMap< FName, TObjectPtr< UObject > > & GetGeneratedSubObjectTemplates() const

Retrieve archetype objects used for instantiating node instances and references.


function GetOutputProxyPropertyData¶

inline FSMInstanceProxyPropertyData & GetOutputProxyPropertyData()

Retrieve output proxy property data. This contains copies of values a state node outputs to. Access to this generally isn't necessary, but may be useful if proxy data needs to be serialized to or from disk.


function FindOrAddOutputProxyPropertyData¶

FSMProxyPropertyData * FindOrAddOutputProxyPropertyData(
    const FSMProxyPropertyPath & InArgs
)

Attempt to add output property data.


function FindOutputProxyPropertyData¶

FSMProxyPropertyData * FindOutputProxyPropertyData(
    const FSMProxyPropertyPath & InArgs
)

Find output property data.


function GetNodeExposedFunctions¶

inline TMap< FGuid, FSMExposedNodeFunctions > & GetNodeExposedFunctions()

NodeGuid -> ExposedNodeFunctions. This is mapped by NODE guid - not path guid - and should always be called from nodes directly owned by this instance. IE nodes contained in a reference sm won't be found unless called on the reference.

Pointers to the contained exposed function array are set on each node instance using it. This is done to offset struct blueprint storage costs during compile, allowing larger state machines.

This map is set by the compiler and should not be modified post initialize as there will be the potential for memory stomps on initialized nodes.


function AddNonThreadSafeNode¶

void AddNonThreadSafeNode(
    FSMNode_Base * InNode
)

Signal a node isn't thread safe to prevent it from loading async.


function GetRootNodeNameDefault¶

static inline FString GetRootNodeNameDefault()

The default root node name to assign. Should never be changed.


function GetStateMachineClassPropertyName¶

static inline FName GetStateMachineClassPropertyName()

The name of the StateMachineClass property, which represents the RootStateMachineNodeClass.


function GetInternalEventUpdateFunctionName¶

static inline FName GetInternalEventUpdateFunctionName()

function GetInternalEvaluateAndTakeTransitionChainFunctionName¶

static inline FName GetInternalEvaluateAndTakeTransitionChainFunctionName()

function GetInternalEventCleanupFunctionName¶

static inline FName GetInternalEventCleanupFunctionName()

Protected Functions Documentation¶

function OnStateMachineInitialStateLoaded¶

void OnStateMachineInitialStateLoaded(
    const FGuid & StateGuid
)

images/classes/SMInstance/img/nd_img_OnStateMachineInitialStateLoaded.png

Called after an initial state has been set with LoadFromState() or LoadFromMultipleStates(). This may be called multiple times depending whether there is more than one state being loaded or if parent state machines are also being loaded.

Parameters:

StateGuid
The guid of the state being loaded. The state instance can be retrieved with GetStateInstanceByGuid.

function OnStateMachineInitialStateLoaded_Implementation¶

virtual void OnStateMachineInitialStateLoaded_Implementation(
    const FGuid & StateGuid
)

function FinishInitialize¶

virtual void FinishInitialize()

Called after Initialize sequence completed for methods that must run on the GameThread.


function HandleStopOnEndState¶

bool HandleStopOnEndState()

Check if in an end state and stop.

Return: true if stopped.


function CleanupAsyncObjects¶

virtual void CleanupAsyncObjects()

Async objects need their async flags removed so they can be garbage collected.


function CleanupAsyncInitializationTask¶

void CleanupAsyncInitializationTask()

Wait for the async task to complete and free memory on completion.


function Tick_Implementation¶

virtual void Tick_Implementation(
    float DeltaTime
)

function OnPreStateMachineInitialized_Implementation¶

inline virtual void OnPreStateMachineInitialized_Implementation()

function OnStateMachineInitialized_Implementation¶

inline virtual void OnStateMachineInitialized_Implementation()

function OnStateMachineStart_Implementation¶

inline virtual void OnStateMachineStart_Implementation()

function OnStateMachineUpdate_Implementation¶

inline virtual void OnStateMachineUpdate_Implementation(
    float DeltaSeconds
)

function OnStateMachineStop_Implementation¶

inline virtual void OnStateMachineStop_Implementation()

function OnStateMachineShutdown_Implementation¶

inline virtual void OnStateMachineShutdown_Implementation()

function OnStateMachineTransitionTaken_Implementation¶

inline virtual void OnStateMachineTransitionTaken_Implementation(
    const FSMTransitionInfo & Transition
)

function OnStateMachineStateChanged_Implementation¶

inline virtual void OnStateMachineStateChanged_Implementation(
    const FSMStateInfo & ToState,
    const FSMStateInfo & FromState
)

function OnStateMachineStateStarted_Implementation¶

inline virtual void OnStateMachineStateStarted_Implementation(
    const FSMStateInfo & State
)

function Internal_Update¶

void Internal_Update(
    float DeltaSeconds
)

Internal update logic. Can be called during an update and used by event triggers.


function Internal_EvaluateAndTakeTransitionChainByGuid¶

bool Internal_EvaluateAndTakeTransitionChainByGuid(
    const FGuid & PathGuid
)

Internal logic for taking a transition chain by the path guid.


function Internal_EventUpdate¶

void Internal_EventUpdate()

Internal logic from when an auto-bound event might trigger an update.


function Internal_EventCleanup¶

void Internal_EventCleanup(
    const FGuid & PathGuid
)

Internal cleanup logic after an auto-bound event fires.


function BuildStateMachineMap¶

void BuildStateMachineMap(
    FSMStateMachine * StateMachine
)

Assemble a complete map of all nested nodes and state machines. Builds out GuidNodeMap and StateMachineGuids. InstancesMapped keeps track of all instances built to prevent stack overflow in the event of state machine references that self reference.


function BuildStateMachineMap¶

void BuildStateMachineMap(
    FSMStateMachine * StateMachine,
    TSet< USMInstance * > & InstancesMapped
)

function CheckIsInitialized¶

bool CheckIsInitialized() const

Logs a warning if not initialized.


function UpdateTime¶

void UpdateTime()

Records time running so delta time can be established if not ticking or providing accurate delta seconds.


function RecordPreviousStateHistory¶

void RecordPreviousStateHistory(
    FSMState_Base * PreviousState
)

Record the given state into the state history.


function TrimStateHistory¶

void TrimStateHistory()

Makes sure state history current count doesn't exceed max count.


Public Attributes Documentation¶

variable RootStateMachineGuid¶

FGuid RootStateMachineGuid;

Used to identify the root state machine during initialization. This is not a calculated value and represents the NodeGuid.


variable OnPreStateMachineInitializedEvent¶

FOnStateMachineInitializedSignature OnPreStateMachineInitializedEvent;

Called at the beginning of Initialize(). Most information will not be available at this stage other than the context.

Warning:

This will not fire when the state machine is initialized async, as the broadcast is not thread safe.


variable OnStateMachineInitializedEvent¶

FOnStateMachineInitializedSignature OnStateMachineInitializedEvent;

Called when the state machine is first initialized.


variable OnStateMachineStartedEvent¶

FOnStateMachineStartedSignature OnStateMachineStartedEvent;

Called right before the state machine is started.


variable OnStateMachineUpdatedEvent¶

FOnStateMachineUpdatedSignature OnStateMachineUpdatedEvent;

Called right before the state machine is updated.


variable OnStateMachineStoppedEvent¶

FOnStateMachineStoppedSignature OnStateMachineStoppedEvent;

Called right after the state machine has ended.


variable OnStateMachineShutdownEvent¶

FOnStateMachineShutdownSignature OnStateMachineShutdownEvent;

Called right after the state machine has shutdown.


variable OnStateMachineTransitionTakenEvent¶

FOnStateMachineTransitionTakenSignature OnStateMachineTransitionTakenEvent;

Called when a transition has evaluated to true and is being taken.


variable OnStateMachineStateChangedEvent¶

FOnStateMachineStateChangedSignature OnStateMachineStateChangedEvent;

Called when a state machine has switched states.


variable OnStateMachineStateStartedEvent¶

FOnStateMachineStateStartedSignature OnStateMachineStateStartedEvent;

Called when a state has started. This happens after OnStateMachineStateChanged and all previous transitions have evaluated.


variable ReferenceTemplates¶

TArray< TObjectPtr< UObject > > ReferenceTemplates;

Deprecated:

Object templates are now stored on the Blueprint Generated Class. Access by calling GetGeneratedSubObjectTemplates() instead.


Protected Attributes Documentation¶

variable ComponentOwner¶

TObjectPtr< USMStateMachineComponent > ComponentOwner;

The component owning this instance.


variable NetworkInterface¶

TScriptInterface< ISMStateMachineNetworkedInterface > NetworkInterface;

Pointer to server object to notify of active transitions.


variable GuidNodeMap¶

TMap< FGuid, FSMNode_Base * > GuidNodeMap;

Flattened map of all node Path Guids -> Node references


variable GuidStateMap¶

TMap< FGuid, FSMState_Base * > GuidStateMap;

Flattened map of all state Path Guids -> State references.


variable GuidTransitionMap¶

TMap< FGuid, FSMTransition * > GuidTransitionMap;

Flattened map of all transition Path Guids -> Transition references.


variable StateMachineGuids¶

TSet< FGuid > StateMachineGuids;

Map of all StateMachine Path Guids


variable RootStateMachine¶

FSMStateMachine RootStateMachine;

Top level state machine


variable R_StateMachineContext¶

TObjectPtr< UObject > R_StateMachineContext;

The context to run the state machine in.


variable ReferenceOwner¶

TObjectPtr< USMInstance > ReferenceOwner;

If this instance is owned by another instance making this a reference.


variable StateMachineClass¶

TSubclassOf< USMStateMachineInstance > StateMachineClass;

The custom state machine node class assigned to the root state machine. This is used for rule evaluation, for exposing variables on state machine references, or for compile validation.


variable bAutoManageTime¶

uint8 bAutoManageTime;

Automatically calculate delta seconds if none are provided. Requires context with a valid World.


variable bStopOnEndState¶

uint8 bStopOnEndState;

Should this instance stop itself once an end state has been reached. An Update call is required for this to occur.


variable bCanEverTick¶

uint8 bCanEverTick;

Should this instance tick. By default it will update the state machine.


variable bCanTickInEditor¶

uint8 bCanTickInEditor;

Should this instance tick in editor.


variable bCanTickWhenPaused¶

uint8 bCanTickWhenPaused;

Should this instance tick when the game is paused.


variable bTickRegistered¶

uint8 bTickRegistered;

Setting to false physically prevents the tick function from being registered and the instance from ever ticking. This is different from bCanEverTick in that it cannot be changed and it also offers slightly better performance.

This is generally best used with non-component state machines created by CreateStateMachineInstance.


variable bTickBeforeInitialize¶

uint8 bTickBeforeInitialize;

Allow the state machine to tick before it is initialized. This likely isn't necessary as CreateStateMachineInstance will initialize the state machine.


variable bTickBeforeBeginPlay¶

uint8 bTickBeforeBeginPlay;

When false IsTickable checks if the world has started play.


variable TickInterval¶

float TickInterval;

Time in seconds between native ticks. This mostly affects the "Update" rate of the state machine. Overloaded Ticks won't be affected.


variable TimeSinceAllowedTick¶

float TimeSinceAllowedTick = 0.f;

Time since the last valid tick occurred.


variable WorldSeconds¶

float WorldSeconds = 0.f;

variable WorldTimeDelta¶

float WorldTimeDelta = 0.f;

variable InputComponent¶

TObjectPtr< UInputComponent > InputComponent;

variable AutoReceiveInput¶

TEnumAsByte< ESMStateMachineInput::Type > AutoReceiveInput;

Automatically registers this state machine to receive input from a player. Input events placed in the event graph will always fire and execute.

Input placed in node graphs will ALWAYS fire (consume input if checked) but only execute their logic while the node is initialized.

Example: State A is entered. Any input events in state A and all outbound transitions including conduits will fire and execute when the key is pressed. Once State A exits all of the input events will still fire when pressed, but any blueprint logic will not execute.

If consuming input is a problem, either uncheck the ConsumeInput option on the input event, or create a custom node class and use input actions there.


variable InputPriority¶

int32 InputPriority;

The priority of this input component when pushed in to the stack.


variable bBlockInput¶

uint8 bBlockInput;

Whether any components lower on the input stack should be allowed to receive input.


variable StateHistory¶

TArray< FSMStateHistory > StateHistory;

End Input.

Ordered history of states, oldest to newest, not including active state(s).


variable StateHistoryMaxCount¶

int32 StateHistoryMaxCount = 20;

The total number of states to keep in history. Set to -1 for no limit.


variable bEnableLogging¶

uint32 bEnableLogging;

Enable info logging for the state machine.


variable bLogStateChange¶

uint32 bLogStateChange;

Log when a state change occurs. This includes when a state machine starts or exits where transitions won't apply.


variable bLogTransitionTaken¶

uint32 bLogTransitionTaken;

Log whenever a transition occurs.


variable bCanReplicateAsReference¶

uint32 bCanReplicateAsReference;

If this specific instance should be replicated if it is referenced by another state machine. Requires a component and proper network setup. This allows RPCs and replicated variables defined on this blueprint to work and is not required just for the state machine to function on the network.

The primary instance will always be replicated when the component replicates.


variable bCanReplicateNodeInstances¶

uint32 bCanReplicateNodeInstances;

If node instances are allowed to replicate, allowing replicated variables and RPCs to be used within Node Classes. Requires a component and proper network setup. Each node requires Enable Replication set to function.


variable bCallTickOnManualUpdate¶

uint32 bCallTickOnManualUpdate;

The Update method will call Tick only if Update was not called by native Tick.


variable bIsTicking¶

uint32 bIsTicking;

True if currently ticking.


variable bIsUpdating¶

uint32 bIsUpdating;

True if currently updating.


variable bCanEvaluateTransitionsLocally¶

uint32 bCanEvaluateTransitionsLocally;

Should this instance be allowed to process transitions.


variable bCanTakeTransitionsLocally¶

uint32 bCanTakeTransitionsLocally;

Should this instance take transitions or only notify the server.


variable bCanExecuteStateLogic¶

uint32 bCanExecuteStateLogic;

Should this instance be allowed to execute state logic.


variable bHasStarted¶

uint32 bHasStarted;

True once the instance has started.


variable bLoadFromStatesCalled¶

uint32 bLoadFromStatesCalled;

This will be true if at least one initial state was set from user load and will always be set to false on Stop().


variable bInitialized¶

uint32 bInitialized;

Signal the state machine has been initialized. Normally set automatically when calling Initialize().


variable bWaitingForStop¶

uint32 bWaitingForStop;

If the state machine is waiting for a stop command. Only used for networking. Needs to be under instance for more precise control, similar to how individual transitions know when they need to wait.


variable bIsStopping¶

uint32 bIsStopping;

If the state machine instance is currently stopping.


Private Attributes Documentation¶

variable StatesPendingActivation¶

TArray< FSMState_Base * > StatesPendingActivation;

States that need to be activated or deactivated, stored to help the update cycle in the event an end state is detected prematurely.


variable OnPreGarbageCollectHandle¶

FDelegateHandle OnPreGarbageCollectHandle;

variable AsyncInitializationTask¶

TUniquePtr< FAsyncTask< FInitializeInstanceAsyncTask > > AsyncInitializationTask;

The async initialization task.


variable OnStateMachineInitializedAsyncDelegate¶

FOnStateMachineInstanceInitializedAsync OnStateMachineInitializedAsyncDelegate;

Set from caller of initialize async function.


variable OnSubObjectsReplicatedEvent¶

FOnSubObjectsReplicated OnSubObjectsReplicatedEvent;

variable ReplicatedReferences¶

TArray< FSMReferenceContainer > ReplicatedReferences;

Set at initialization time on the primary instance, containing all nested references. Used for reference replicated variables.


variable ReplicatedNodeInstances¶

TArray< FSMNodeInstanceContainer > ReplicatedNodeInstances;

All node instances, including stack instances, which are replicating. Used for replicated variables within node instances.


variable ManualInputController¶

TObjectPtr< APlayerController > ManualInputController;

A manually provided input controller.


variable bInitializingAsync¶

uint32 bInitializingAsync;

True only during async initialization.


variable PathGuidRedirectMap¶

TMap< FGuid, FGuid > PathGuidRedirectMap;

A map of PathGuids which should be redirected to other PathGuids. A PathGuid is the guid generated at run-time during initialization which is unique per node based on the node's path in the state machine. The generated PathGuid is deterministic and has support for references and parent graphs.

Guid redirects aren't necessary unless you modify a node's path in the state machine and have to support loading data from a previous version which may have used the old guids.


variable RootPathGuidCache¶

TMap< FGuid, FSMGuidMap > RootPathGuidCache;

A flattened map of Root FSM (this instance plus references) path guids each containing all of their immediate node to path guids.


variable CachedPropertyData¶

TSharedPtr< FSMCachedPropertyData, ESPMode::ThreadSafe > CachedPropertyData;

Cached property data for this state machine instance. Once mapped it includes properties of this instance and all contained node classes.


variable OutputProxyPropertyData¶

FSMInstanceProxyPropertyData OutputProxyPropertyData;

Proxy properties for node output variables.


variable NodeExposedFunctions¶

TMap< FGuid, FSMExposedNodeFunctions > NodeExposedFunctions;

variable NonThreadSafeNodes¶

TArray< FSMNode_Base * > NonThreadSafeNodes;

variable CriticalSection¶

FCriticalSection CriticalSection;

variable DebugStateMachine¶

FSMDebugStateMachine DebugStateMachine;

Friends¶

friend USMStateMachineComponent¶

friend class USMStateMachineComponent(
    USMStateMachineComponent 
);