Navigation
API > API/Plugins > API/Plugins/StateTreeModule
StateTree Execution Context is a helper that is used to update StateTree instance data.
The context is meant to be temporary, you should not store a context across multiple frames.
The owner is used as the owner of the instantiated UObjects in the instance data and logging, it should have same or greater lifetime as the InstanceData.
In common case you can use the constructor to initialize the context, and us a helper struct to set up the context data and external data getter: FStateTreeExecutionContext Context(*GetOwner(), *StateTreeRef.GetStateTree(), InstanceData); if (SetContextRequirements(Context)) { Context.Tick(DeltaTime); }
bool UMyComponent::SetContextRequirements(FStateTreeExecutionContext& Context) { if (!Context.IsValid()) { return false; } // Setup context data Context.SetContextDataByName(...); ...
Context.SetCollectExternalDataCallback(FOnCollectStateTreeExternalData::CreateUObject(this, &UMyComponent::CollectExternalData);
return Context.AreContextDataViewsValid(); }
bool UMyComponent::CollectExternalData(const FStateTreeExecutionContext& Context, const UStateTree* StateTree, TArrayView
In this example the SetContextRequirements() method is used to set the context defined in the schema, and the delegate FOnCollectStateTreeExternalData is used to query the external data required by the tasks and conditions.
In case the State Tree links to other state tree assets, the collect external data might get called multiple times, once for each asset.
| Name | FStateTreeExecutionContext |
| Type | struct |
| Header File | /Engine/Plugins/Runtime/StateTree/Source/StateTreeModule/Public/StateTreeExecutionContext.h |
| Include Path | #include "StateTreeExecutionContext.h" |
Syntax
struct FStateTreeExecutionContext : public FStateTreeMinimalExecutionContext
Inheritance Hierarchy
- FStateTreeReadOnlyExecutionContext → FStateTreeMinimalExecutionContext → FStateTreeExecutionContext
Derived Classes
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FStateTreeExecutionContext
(
TNotNull< UObject* > Owner, |
StateTreeExecutionContext.h | ||
FStateTreeExecutionContext
(
UObject& InOwner, |
FStateTreeExecutionContext implementation | StateTreeExecutionContext.h | |
FStateTreeExecutionContext
(
const FStateTreeExecutionContext& InContextToCopy, |
Construct an execution context from a parent context and another tree. | StateTreeExecutionContext.h | |
FStateTreeExecutionContext
(
const FStateTreeExecutionContext& InContextToCopy, |
Construct an execution context from a parent context and another tree. | StateTreeExecutionContext.h | |
| StateTreeExecutionContext.h |
Destructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual ~FStateTreeExecutionContext() |
StateTreeExecutionContext.h |
Structs
| Name | Remarks |
|---|---|
| FAllowDirectTransitionsScope | Helper struct to track when it is allowed to request transitions. |
| FCollectedExternalDataCache | |
| FCurrentFrameStateSelectionEventsScope | Helper struct to track currently processed state selection events. |
| FCurrentlyProcessedFrameScope | Helper struct to track currently processed frame. |
| FCurrentlyProcessedStateScope | Helper struct to track currently processed state. |
| FCurrentlyProcessedTransitionEventScope | Helper struct to track currently processed transition event. |
| FExternalGlobalParameters | Structure to-be-populated and set for any StateTree using any EStateTreeDataSourceType::ExternalGlobalParameterData bindings |
| FNodeInstanceDataScope | Helper struct to set current node data. |
| FStartParameters | |
| FStateSelectionResult | Describes a result of States Selection. |
| FTickTaskArguments | |
| FTickTaskResult |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
bool AddDelegateListener
(
const FStateTreeDelegateListener& Listener, |
Adds delegate listener. | StateTreeExecutionContext.h | |
bool AreContextDataViewsValid() |
StateTreeExecutionContext.h | ||
void BindDelegate
(
const FStateTreeDelegateListener& Listener, |
Registers the delegate to the listener. | StateTreeExecutionContext.h | |
void BroadcastDelegate
(
const FStateTreeDelegateDispatcher& Dispatcher |
Broadcasts the delegate. | StateTreeExecutionContext.h | |
void ConsumeEvent
(
const FStateTreeSharedEvent& Event |
Consumes and removes the specified event from the event queue. | StateTreeExecutionContext.h | |
PRAGMA_DISABLE_DEPRECATION_WARNINGS void FinishTask
(
const UE::StateTree::FFinishedTask& Task, |
Finishes a task. | StateTreeExecutionContext.h | |
void FinishTask
(
const FStateTreeTaskBase& Task, |
Finishes a task. | StateTreeExecutionContext.h | |
EStateTreeRunStatus ForceTransition
(
const FRecordedStateTreeTransitionResult& Transition |
Forces transition to a state from a previously recorded state tree transition result. | StateTreeExecutionContext.h | |
TEnableIf< TIsInvocable< TFunc, FStateTreeSharedEvent >::Value, void >::Type ForEachEvent
(
TFunc&& Function |
Iterates over all events. | StateTreeExecutionContext.h | |
TEnableIf< TIsInvocable< TFunc, FStateTreeEvent >::Value, void >::Type ForEachEvent
(
TFunc&& Function |
Iterates over all events. | StateTreeExecutionContext.h | |
FStateTreeDataView GetContextDataByName
(
const FName Name |
StateTreeExecutionContext.h | ||
TConstArrayView< FStateTreeExternalDataDesc > GetContextDataDescs() |
StateTreeExecutionContext.h | ||
const FStateTreeExecutionFrame * GetCurrentlyProcessedFrame() |
StateTreeExecutionContext.h | ||
FStateTreeDataHandle GetCurrentlyProcessedNode() |
StateTreeExecutionContext.h | ||
FStateTreeIndex16 GetCurrentlyProcessedNodeIndex() |
StateTreeExecutionContext.h | ||
FStateTreeDataHandle GetCurrentlyProcessedNodeInstanceData() |
StateTreeExecutionContext.h | ||
const FStateTreeExecutionFrame * GetCurrentlyProcessedParentFrame() |
StateTreeExecutionContext.h | ||
FStateTreeStateHandle GetCurrentlyProcessedState() |
StateTreeExecutionContext.h | ||
const FStateTreeEventQueue & GetEventQueue() |
StateTreeExecutionContext.h | ||
TConstArrayView< FStateTreeEvent > GetEventsToProcess() |
StateTreeExecutionContext.h | ||
TConstArrayView< FStateTreeSharedEvent > GetEventsToProcessView() |
StateTreeExecutionContext.h | ||
T::DataType & GetExternalData
(
const T Handle |
Returns reference to external data based on provided handle. | StateTreeExecutionContext.h | |
T::DataType * GetExternalDataPtr
(
const T Handle |
Returns pointer to external data based on provided item handle. | StateTreeExecutionContext.h | |
FStateTreeDataView GetExternalDataView
(
const FStateTreeExternalDataHandle Handle |
StateTreeExecutionContext.h | ||
const FStateTreeInstanceData * GetInstanceData () |
StateTreeExecutionContext.h | ||
T & GetInstanceData
(
const FStateTreeNodeBase& Node |
StateTreeExecutionContext.h | ||
T::FInstanceDataType & GetInstanceData
(
const T& Node |
StateTreeExecutionContext.h | ||
T * GetInstanceDataPtr
(
const FStateTreeNodeBase& Node |
StateTreeExecutionContext.h | ||
TStateTreeInstanceDataStructRef< typename T::FInstanceDataType > GetInstanceDataStructRef
(
const T& Node |
StateTreeExecutionContext.h | ||
const FStateTreeReference * GetLinkedStateTreeOverrideForTag
(
const FGameplayTag StateTag |
StateTreeExecutionContext.h | ||
FStateTreeEventQueue & GetMutableEventQueue() |
StateTreeExecutionContext.h | ||
TArrayView< FStateTreeSharedEvent > GetMutableEventsToProcessView() |
StateTreeExecutionContext.h | ||
FStateTreeInstanceData * GetMutableInstanceData() |
StateTreeExecutionContext.h | ||
TConstArrayView< FRecordedStateTreeTransitionResult > GetRecordedTransitions() |
Returns the recorded transitions for this context. | StateTreeExecutionContext.h | |
FStateTreeWeakExecutionContext MakeWeakExecutionContext() |
StateTreeExecutionContext.h | ||
PRAGMA_DISABLE_DEPRECATION_WARNINGS FStateTreeWeakTaskRef MakeWeakTaskRef
(
const FStateTreeTaskBase& Node |
Similar to GetInstanceData, the node needs to be the current processing node. | StateTreeExecutionContext.h | |
PRAGMA_DISABLE_DEPRECATION_WARNINGS FStateTreeWeakTaskRef MakeWeakTaskRefFromInstanceData
(
const T& InInstanceData |
Similar to GetInstanceData, the instance data needs to be the current processing node. | StateTreeExecutionContext.h | |
PRAGMA_DISABLE_DEPRECATION_WARNINGS FStateTreeWeakTaskRef MakeWeakTaskRefFromInstanceDataPtr
(
const T* InInstanceData |
Similar to GetInstanceData, the instance data needs to be the current processing node. | StateTreeExecutionContext.h | |
void RemoveDelegateListener
(
const FStateTreeDelegateListener& Listener |
Removes delegate listener. | StateTreeExecutionContext.h | |
void RequestTransition
(
FStateTreeStateHandle TargetState, |
Requests transition to a state. | StateTreeExecutionContext.h | |
void RequestTransition
(
const FStateTreeTransitionRequest& Request |
Requests transition to a state. | StateTreeExecutionContext.h | |
void SetCollectExternalDataCallback
(
const FOnCollectStateTreeExternalData& Callback |
Sets callback used to collect external data views during State Tree execution. | StateTreeExecutionContext.h | |
void SetContextData
(
const FStateTreeExternalDataHandle Handle, |
Sets context data view value for specific item. | StateTreeExecutionContext.h | |
bool SetContextDataByName
(
const FName Name, |
Sets the context data based on name (name is defined in the schema), returns true if data was found | StateTreeExecutionContext.h | |
void SetExternalGlobalParameters
(
const FExternalGlobalParameters* Parameters |
StateTreeExecutionContext.h | ||
void SetLinkedStateTreeOverrides
(
const FStateTreeReferenceOverrides* InLinkedStateTreeOverrides |
Overrides for linked State Trees. | StateTreeExecutionContext.h | |
void SetLinkedStateTreeOverrides
(
FStateTreeReferenceOverrides InLinkedStateTreeOverrides |
Overrides for linked State Trees. | StateTreeExecutionContext.h | |
EStateTreeRunStatus Start
(
FStartParameters Parameter |
Start executing. | StateTreeExecutionContext.h | |
EStateTreeRunStatus Start
(
const FInstancedPropertyBag* InitialParameters, |
Start executing. | StateTreeExecutionContext.h | |
EStateTreeRunStatus Stop
(
const EStateTreeRunStatus CompletionStatus |
Stop executing if the tree is running. | StateTreeExecutionContext.h | |
EStateTreeRunStatus Tick
(
const float DeltaTime |
Tick the state tree logic, updates the tasks and triggers transitions. | StateTreeExecutionContext.h | |
| Tick the state tree logic partially, triggers the transitions. | StateTreeExecutionContext.h | ||
EStateTreeRunStatus TickUpdateTasks
(
const float DeltaTime |
Tick the state tree logic partially, updates the tasks. | StateTreeExecutionContext.h | |
void UnbindDelegate
(
const FStateTreeDelegateListener& Listener |
Unregisters the callback bound to the listener. | StateTreeExecutionContext.h |
Protected
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FStateTreeDataView AddTemporaryInstance
(
const FStateTreeExecutionFrame& Frame, |
Adds a temporary instance that can be located using frame and data handle later. | StateTreeExecutionContext.h | |
virtual void BeginDelayedTransition
(
const FStateTreeTransitionDelayedState& DelayedState |
Callback when delayed transition is triggered. | StateTreeExecutionContext.h | |
void CallStopOnEvaluatorsAndGlobalTasks
(
const FStateTreeExecutionFrame* ParentFrame, |
Stops evaluators and global tasks of the given frame. Expects nodes data to be already bound. | StateTreeExecutionContext.h | |
void CaptureNewStateEvents
(
TConstArrayView< FStateTreeExecutionFrame > PrevFrames, |
Captures StateTree events used during the state selection. | StateTreeExecutionContext.h | |
bool CollectActiveExternalData() |
Collects external data for all StateTrees in active frames. | StateTreeExecutionContext.h | |
FStateTreeIndex16 CollectExternalData
(
const UStateTree* StateTree |
Collects external data for specific State Tree asset. | StateTreeExecutionContext.h | |
bool CopyBatchOnActiveInstances
(
const FStateTreeExecutionFrame* ParentFrame, |
Copies a batch of properties to the data in TargetView. | StateTreeExecutionContext.h | |
bool CopyBatchWithValidation
(
const FStateTreeExecutionFrame* ParentFrame, |
Copies a batch of properties to the data in TargetView. | StateTreeExecutionContext.h | |
FString DebugGetEventsAsString() |
StateTreeExecutionContext.h | ||
FString DebugGetStatePath
(
TConstArrayView< FStateTreeExecutionFrame > ActiveFrames, |
StateTreeExecutionContext.h | ||
EStateTreeRunStatus EnterState
(
FStateTreeTransitionResult& Transition |
Handles logic for entering State. | StateTreeExecutionContext.h | |
void EvaluatePropertyFunctionsOnActiveInstances
(
const FStateTreeExecutionFrame* CurrentParentFrame, |
Evaluate all function at given range. | StateTreeExecutionContext.h | |
void EvaluatePropertyFunctionsWithValidation
(
const FStateTreeExecutionFrame* CurrentParentFrame, |
Evaluate all function at given range. | StateTreeExecutionContext.h | |
float EvaluateUtility
(
const FStateTreeExecutionFrame* CurrentParentFrame, |
Calculate the final score of all considerations at given range | StateTreeExecutionContext.h | |
void ExitState
(
const FStateTreeTransitionResult& Transition |
Handles logic for exiting State. | StateTreeExecutionContext.h | |
FStateTreeDataView GetDataView
(
const FStateTreeExecutionFrame* ParentFrame, |
StateTreeExecutionContext.h | ||
FStateTreeDataView GetDataView
(
const FStateTreeExecutionFrame* ParentFrame, |
StateTreeExecutionContext.h | ||
FStateTreeDataView GetDataViewOrTemporary
(
const FStateTreeExecutionFrame* ParentFrame, |
StateTreeExecutionContext.h | ||
FStateTreeDataView GetDataViewOrTemporary
(
const FStateTreeExecutionFrame* ParentFrame, |
StateTreeExecutionContext.h | ||
| StateTreeExecutionContext.h | |||
const FStateTreeExecutionState & GetExecState () |
StateTreeExecutionContext.h | ||
EStateTreeRunStatus GetGlobalTasksCompletedStatesStatus() |
In the list of completed states, returns the run status when it's completed by a global task. | StateTreeExecutionContext.h | |
virtual FString GetInstanceDescription() |
StateTreeExecutionContext.h | ||
FString GetSafeStateName
(
const FStateTreeExecutionFrame& CurrentFrame, |
StateTreeExecutionContext.h | ||
FString GetStateStatusString
(
const FStateTreeExecutionState& ExecState |
StateTreeExecutionContext.h | ||
FStateTreeDataView GetTemporaryDataView
(
const FStateTreeExecutionFrame* ParentFrame, |
StateTreeExecutionContext.h | ||
PRAGMA_DISABLE_DEPRECATION_WARNINGS bool IsFinishedTaskValid
(
const UE::StateTree::FFinishedTask& Task |
Confirms that the frame and state ID are valid and the task index is correct. | StateTreeExecutionContext.h | |
bool IsHandleSourceValid
(
const FStateTreeExecutionFrame* ParentFrame, |
StateTreeExecutionContext.h | ||
bool IsHandleSourceValid
(
const FStateTreeExecutionFrame* ParentFrame, |
StateTreeExecutionContext.h | ||
FRecordedStateTreeTransitionResult MakeRecordedTransitionResult
(
const FStateTreeTransitionResult& Transition |
Create a new recorded transition from a transition result. | StateTreeExecutionContext.h | |
TOptional< FStateTreeTransitionResult > MakeTransitionResult
(
const FRecordedStateTreeTransitionResult& Transition |
Create a new transition result from a recorded transition result. | StateTreeExecutionContext.h | |
PRAGMA_DISABLE_DEPRECATION_WARNINGS FStateTreeWeakTaskRef MakeWeakTaskRefInternal() |
StateTreeExecutionContext.h | ||
PRAGMA_DISABLE_DEPRECATION_WARNINGS void MarkStateCompleted
(
UE::StateTree::FFinishedTask& FinisedTask |
Adds the state to the completed list from a finished task. | StateTreeExecutionContext.h | |
void RemoveAllDelegateListeners() |
Removes all delegate listeners. | StateTreeExecutionContext.h | |
bool RequestTransition
(
const FStateTreeExecutionFrame& CurrentFrame, |
Requests transition to a specified state with specified priority. | StateTreeExecutionContext.h | |
bool SelectState
(
const FStateTreeExecutionFrame& CurrentFrame, |
Runs state selection logic starting at the specified state, walking towards the leaf states. | StateTreeExecutionContext.h | |
bool SelectStateInternal
(
const FStateTreeExecutionFrame* CurrentParentFrame, |
Used internally to do the recursive part of the SelectState(). | StateTreeExecutionContext.h | |
bool SetGlobalParameters
(
const FInstancedPropertyBag& Parameters |
Stores copy of provided parameters as State Tree global parameters. | StateTreeExecutionContext.h | |
void SetUpdatePhaseInExecutionState
(
FStateTreeExecutionState& ExecutionState, |
Updates the update phase of the statetree execution state. | StateTreeExecutionContext.h | |
void SetupNextTransition
(
const FStateTreeExecutionFrame& CurrentFrame, |
Sets up NextTransition based on the provided parameters and the current execution status. | StateTreeExecutionContext.h | |
EStateTreeRunStatus StartEvaluatorsAndGlobalTasks
(
FStateTreeIndex16& OutLastInitializedTaskIndex |
Starts evaluators and global tasks. | StateTreeExecutionContext.h | |
EStateTreeRunStatus StartTemporaryEvaluatorsAndGlobalTasks
(
const FStateTreeExecutionFrame* CurrentParentFrame, |
StateTreeExecutionContext.h | ||
EStateTreeRunStatus StartTemporaryEvaluatorsAndGlobalTasks
(
const FStateTreeExecutionFrame* CurrentParentFrame, |
Starts temporary instances of global evaluators and tasks for a given frame. | StateTreeExecutionContext.h | |
void StateCompleted () |
Handles logic for signaling State completed. | StateTreeExecutionContext.h | |
void StopEvaluatorsAndGlobalTasks
(
const EStateTreeRunStatus CompletionStatus, |
Stops evaluators and global tasks. | StateTreeExecutionContext.h | |
void StopTemporaryEvaluatorsAndGlobalTasks
(
const FStateTreeExecutionFrame* CurrentParentFrame, |
Stops temporary global evaluators and tasks for the provided frame. | StateTreeExecutionContext.h | |
bool TestAllConditions
(
const FStateTreeExecutionFrame* CurrentParentFrame, |
Checks all conditions at given range | StateTreeExecutionContext.h | |
EStateTreeRunStatus TickEvaluatorsAndGlobalTasks
(
const float DeltaTime, |
Tick evaluators and global tasks by delta time. | StateTreeExecutionContext.h | |
EStateTreeRunStatus TickEvaluatorsAndGlobalTasksForFrame
(
const float DeltaTime, |
Tick evaluators and global tasks of a specific frame. | StateTreeExecutionContext.h | |
EStateTreeRunStatus TickPostlude() |
StateTreeExecutionContext.h | ||
EStateTreeRunStatus TickPrelude() |
Common functionality shared by the tick methods. | StateTreeExecutionContext.h | |
EStateTreeRunStatus TickTasks
(
const float DeltaTime |
Ticks tasks of all active states starting from current state by delta time. | StateTreeExecutionContext.h | |
FTickTaskResult TickTasks
(
const FTickTaskArguments& Args |
Ticks tasks and updates the bindings for a specific state or frame. | StateTreeExecutionContext.h | |
void TickTriggerTransitionsInternal() |
Handles transition triggering part of the tick. | StateTreeExecutionContext.h | |
void TickUpdateTasksInternal
(
float DeltaTime |
Handles task ticking part of the tick. | StateTreeExecutionContext.h | |
bool TriggerTransitions () |
Triggers transitions based on current run status. | StateTreeExecutionContext.h | |
void UpdateCompletedStateList () |
StateTreeExecutionContext.h | ||
void UpdateCompletedStateList
(
bool bMarkTaskProcessed |
Removes stale entries and fills the completed states list. | StateTreeExecutionContext.h | |
void UpdateInstanceData
(
TConstArrayView< FStateTreeExecutionFrame > CurrentActiveFrames, |
StateTreeExecutionContext.h |
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static const FStateTreeExecutionFrame * FindFrame
(
const UStateTree* StateTree, |
Looks for a frame in provided list of frames. | StateTreeExecutionContext.h | |
static FStateTreeDataView GetDataView
(
FStateTreeInstanceStorage& InstanceDataStorage, |
StateTreeExecutionContext.h | ||
static FStateTreeDataView GetDataViewFromInstanceStorage
(
FStateTreeInstanceStorage& InstanceDataStorage, |
StateTreeExecutionContext.h |
Operators
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FStateTreeExecutionContext & operator=
(
const FStateTreeExecutionContext& |
StateTreeExecutionContext.h |