Skip to content

FSMState¶

Module: SMSystem

#include <SMState.h>

Inherits from FSMState_Base, FSMNode_Base

Description¶

struct FSMState;

State nodes that can execute Blueprint logic.

Public Functions¶

Name
FSMState()
virtual void Initialize(USMInstance * Instance) override
virtual void InitializeGraphFunctions() override
virtual void Reset() override
virtual void ExecuteInitializeNodes() override
virtual void ExecuteShutdownNodes() override
virtual bool StartState() override
virtual bool UpdateState(float DeltaSeconds) override
virtual bool EndState(float DeltaSeconds, const FSMTransition * TransitionToTake =nullptr) override
virtual bool TryExecuteGraphProperties(ESMGraphPropertyEvalFlags OnEvent, ESMGraphPropertyDirection InDirection) override
virtual void OnStartedByInstance(USMInstance * Instance) override
virtual void OnStoppedByInstance(USMInstance * Instance) override
virtual bool GetValidTransition(TArray< TArray< FSMTransition * > > & OutTransitions) override

Protected Functions¶

Name
virtual void InitializeFunctionHandlers() override

Additional inherited members¶

Public Functions inherited from FSMState_Base

Name
virtual void UpdateReadStates() override
virtual void ResetReadStates()
FSMState_Base()
virtual bool IsNodeInstanceClassCompatible(UClass * NewNodeInstanceClass) const override
virtual UClass * GetDefaultNodeInstanceClass() const override
const TArray< FSMTransition * > & GetOutgoingTransitions() const
const TArray< FSMTransition * > & GetIncomingTransitions() const
void GetAllTransitionChains(TArray< FSMTransition * > & OutTransitions) const
virtual bool IsEndState() const
virtual bool IsInEndState() const
virtual bool HasUpdated() const
virtual bool IsStateMachine() const
virtual bool IsConduit() const
bool IsRootNode() const
float GetActiveTime() const
void SetCanExecuteLogic(bool bValue)
bool CanExecuteLogic() const
virtual bool CanExecuteGraphProperties(ESMGraphPropertyEvalFlags OnEvent, const USMStateInstance_Base * ForTemplate, ESMGraphPropertyDirection InDirection) const override
bool CanEvaluateTransitionsOnTick() const
void SortTransitions()
void SetTransitionToTake(const FSMTransition * Transition)
const FSMTransition * GetTransitionToTake() const
void SetPreviousActiveState(FSMState_Base * InPreviousState)
void SetPreviousActiveTransition(FSMTransition * InPreviousTransition)
FSMState_Base * GetPreviousActiveState() const
FSMTransition * GetPreviousActiveTransition() const
void NotifyOfParallelReentry(bool bValue =true)
bool HasBeenReenteredFromParallelState() const
bool IsStateEnding() const
const FDateTime & GetStartTime() const
const FDateTime & GetEndTime() const
virtual void SetStartTime(const FDateTime & InStartTime)
virtual void SetEndTime(const FDateTime & InEndTime)
double GetStartCycle() const
virtual void ResetGeneratedValues() override

Protected Functions inherited from FSMState_Base

Name
virtual TSharedPtr< FSMNodeRuntimeData > CreateRuntimeData() const override
void AddOutgoingTransition(FSMTransition * Transition)
void AddIncomingTransition(FSMTransition * Transition)
void InitializeTransitions()
void ShutdownTransitions()
virtual void NotifyInstanceStateHasStarted()
virtual void FirePreStartEvents()
virtual void FirePostStartEvents()

Public Attributes inherited from FSMState_Base

Friends inherited from FSMState_Base

Public Classes inherited from FSMNode_Base

Public Functions inherited from FSMNode_Base

Name
FSMNode_FunctionHandlers * GetFunctionHandlers() const
virtual void UpdateReadStates()
FSMNode_Base()
virtual ~FSMNode_Base() =default
FSMNode_Base(const FSMNode_Base & Node) =default
FSMNode_Base & operator=(const FSMNode_Base & Node)
const TSharedPtr< FSMNodeRuntimeData > & GetRuntimeData() const
TSharedPtr< T > GetRuntimeDataAs() const
bool HaveGraphFunctionsInitialized() const
bool IsInitializedForRun() const
const FGuid & GetNodeGuid() const
void GenerateNewNodeGuid()
const FGuid & GetGuid() const
virtual void CalculatePathGuid(TMap< FString, int32 > & InOutMappedPaths, bool bUseGuidCache =false)
FString GetGuidPath(TMap< FString, int32 > & InOutMappedPaths) const
FGuid CalculatePathGuidConst() const
void GenerateNewNodeGuidIfNotSet()
void SetNodeGuid(const FGuid & NewGuid)
void SetOwnerNodeGuid(const FGuid & NewGuid)
const FGuid & GetOwnerNodeGuid() const
void SetOwnerNode(FSMNode_Base * Owner)
virtual FSMNode_Base * GetOwnerNode() const
USMInstance * GetOwningInstance() const
void CreateNodeInstance()
void CreateStackInstances()
virtual void RunConstructionScripts()
void SetNodeInstanceClass(UClass * NewNodeInstanceClass)
virtual bool IsNodeInstanceClassCompatible(UClass * NewNodeInstanceClass) const
virtual USMNodeInstance * GetNodeInstance() const
virtual USMNodeInstance * GetOrCreateNodeInstance()
virtual bool CanEverCreateNodeInstance() const
const TArray< TObjectPtr< USMNodeInstance > > & GetStackInstancesConst() const
TArray< TObjectPtr< USMNodeInstance > > & GetStackInstances()
USMNodeInstance * GetNodeInStack(int32 Index) const
USMNodeInstance * GetNodeInStack(const FGuid & InTemplateGuid) const
virtual UClass * GetDefaultNodeInstanceClass() const
UClass * GetNodeInstanceClass() const
bool IsUsingDefaultNodeClass() const
void AddVariableGraphProperty(const FSMGraphProperty_Base_Runtime & GraphProperty, const FGuid & OwningTemplateGuid)
void SetNodeName(const FString & Name)
const FString & GetNodeName() const
void SetTemplateName(const FName & Name)
FName GetTemplateName(USMNodeInstance * InNodeInstance =nullptr) const
void AddStackTemplateName(const FName & Name, UClass * TemplateClass)
virtual bool IsActive() const
virtual void SetServerTimeInState(float InTime)
float GetServerTimeInState() const
virtual bool CanExecuteGraphProperties(ESMGraphPropertyEvalFlags OnEvent, const class USMStateInstance_Base * ForTemplate, ESMGraphPropertyDirection InDirection) const
void ExecuteGraphProperties(USMNodeInstance * ForNodeInstance, const FGuid * ForTemplateGuid)
void ExecuteGraphProperties(const FFilterGraphPropertyArgs & InArgs)
const TArray< FSMGraphProperty_Base_Runtime * > & GetGraphProperties() const
const TMap< FGuid, FSMGraphPropertyTemplateOwner > & GetTemplateGraphProperties() const
virtual void TryResetVariables()
virtual bool IsDebugActive() const
virtual bool WasDebugActive() const
virtual void EditorShutdown()
virtual void ResetGeneratedValues()
void TriggerDebugBreakpoint()
FName GetNodeGuidPropertyName()
FName GetPathGuidPropertyName()

Protected Functions inherited from FSMNode_Base

Name
virtual TSharedPtr< FSMNodeRuntimeData > CreateRuntimeData() const
virtual void PrepareGraphExecution()
virtual void SetActive(bool bValue)
void CreateGraphProperties()
void CreateGraphPropertiesForTemplate(USMNodeInstance * Template, const TMap< FGuid, FSMGraphProperty_Base_Runtime * > & MappedGraphPropertyInstances)

Public Attributes inherited from FSMNode_Base

Name
bool bValidateGuids
FVector2D NodePosition
float TimeInState
int32 DuplicateId
uint8 bIsInEndState
uint8 bHasUpdated
uint8 bHasInputEvents

Protected Attributes inherited from FSMNode_Base

Name
FGuid Guid
FGuid OwnerGuid
FGuid PathGuid
FString NodeName
FName TemplateName
TArray< FName > StackTemplateNames
TArray< TObjectPtr< USMNodeInstance > > StackNodeInstances
TObjectPtr< USMInstance > OwningInstance
TObjectPtr< USMNodeInstance > NodeInstance
TMap< FGuid, FSMGraphPropertyTemplateOwner > TemplateVariableGraphProperties
TObjectPtr< UClass > NodeInstanceClass

Friends inherited from FSMNode_Base

Public Functions Documentation¶

function FSMState¶

FSMState()

function Initialize¶

virtual void Initialize(
    USMInstance * Instance
) override

Initializes various properties and associate the node with its owning state machine instance.

Parameters:

Instance
The state machine instance used to initialize the node.

Reimplements: FSMState_Base::Initialize


function InitializeGraphFunctions¶

virtual void InitializeGraphFunctions() override

Initialize all graph evaluator functions. Must be called from GameThread!

Reimplements: FSMState_Base::InitializeGraphFunctions


function Reset¶

virtual void Reset() override

Resets persistent data.

Reimplements: FSMState_Base::Reset


function ExecuteInitializeNodes¶

virtual void ExecuteInitializeNodes() override

Reimplements: FSMState_Base::ExecuteInitializeNodes


function ExecuteShutdownNodes¶

virtual void ExecuteShutdownNodes() override

Reimplements: FSMState_Base::ExecuteShutdownNodes


function StartState¶

virtual bool StartState() override

Sets the state as active and begins execution.

Reimplements: FSMState_Base::StartState


function UpdateState¶

virtual bool UpdateState(
    float DeltaSeconds
) override

Runs the update execution.

Reimplements: FSMState_Base::UpdateState


function EndState¶

virtual bool EndState(
    float DeltaSeconds,
    const FSMTransition * TransitionToTake =nullptr
) override

Runs the end state execution. Transition to take is so the state knows where it is going only.

Reimplements: FSMState_Base::EndState


function TryExecuteGraphProperties¶

virtual bool TryExecuteGraphProperties(
    ESMGraphPropertyEvalFlags OnEvent,
    ESMGraphPropertyDirection InDirection
) override

Execute desired graph properties for the given event in a given direction.

Parameters:

OnEvent
The event to execute on.
InDirection
The direction of the graph property.

Reimplements: FSMNode_Base::TryExecuteGraphProperties


function OnStartedByInstance¶

virtual void OnStartedByInstance(
    USMInstance * Instance
) override

Called when the blueprint owning this node is started.

Reimplements: FSMState_Base::OnStartedByInstance


function OnStoppedByInstance¶

virtual void OnStoppedByInstance(
    USMInstance * Instance
) override

Called when the blueprint owning this node has stopped.

Reimplements: FSMState_Base::OnStoppedByInstance


function GetValidTransition¶

virtual bool GetValidTransition(
    TArray< TArray< FSMTransition * > > & OutTransitions
) override

Runs through the transitions executing their graphs until a result is found. Builds an ordered list of transitions to take.

Parameters:

OutTransitions
Found transitions. 2D Array of valid paths. If the total size is more than one that means these transitions are leading to parallel states. if each path is more than one that means there are transition conduits involved.

Return: True if a valid path is found, false otherwise.

Reimplements: FSMState_Base::GetValidTransition


Protected Functions Documentation¶

function InitializeFunctionHandlers¶

virtual void InitializeFunctionHandlers() override

Map the FunctionHandler pointer. Must be implemented per child struct!

Reimplements: FSMNode_Base::InitializeFunctionHandlers