Commit Graph

53 Commits

Author SHA1 Message Date
mikko mononen
eda018b6bd StateTree: Fix accessing state captured event
#rb Yoan.StAmant

[CL 33228442 by mikko mononen in ue5-main branch]
2024-04-25 08:50:27 -04:00
mikko mononen
2b93815d0a StateTree: Improved event handling
- Added support for shared event buffer, so that multiple instance data can use the same
- Added API to consume events
- Removed double buffering from events
- Treat TriggerTransitions() as event handler (events flushed after each call to the method)
- Event handlers (including tasks) are executed in priority order
- Transitions and event capturing states can consume events on successful selection
- Added API to tick a StateTree in two passes (update tasks and trigger transitions)
- Change parallel tree tasks to do the task update in Tick(), and event handling in TriggerTransitions()
- Small improvements to the ST debugger to display events
- NOTE: this is breaking change for implementations that has relied events emitted during tick to be available on next EnterState()

#okfirgithub public
#rb Yoan.StAmant

[CL 32924765 by mikko mononen in ue5-main branch]
2024-04-12 06:04:01 -04:00
mikko mononen
91012bfa0b StateTree: Added linked state overrides.
- Added ability to describe override table for linked state tree references
- This allows to override parts of the tree e.g. based on character type
- Fixed visibility of the State parameter button when in fixed mode

#rb guillaume.arruda

[CL 32572125 by mikko mononen in ue5-main branch]
2024-03-28 05:18:19 -04:00
mikko mononen
0cdc2e12b9 StateTree: Fix active instance data access when during selection.
#rb Mieszko.Zielinski
#lockdown julien.marchand

[CL 32545460 by mikko mononen in ue5-main branch]
2024-03-27 11:51:13 -04:00
mikko mononen
a82ca89e98 StateTree: Added support for event payload in transitions and event capture for states. (contributed) [take 2]
- Transitions can now be set up to require a specific payload type and/or a gameplay tag
- Required transition event payload is visible to property bindind for transition conditions
- States can require an event type as enter condition, the event is captured when state is selected
- Required state event payload is visible to binding for state enter conditions, tasks and transistions

[CL 32150454 by mikko mononen in ue5-main branch]
2024-03-11 04:54:44 -04:00
bob tellez
0189872e84 [Backout] - CL32082262
[FYI] mikko.mononen
Original CL Desc
-----------------------------------------------------------------
StateTree: Added support for event payload in transitions and event capture for states. (contributed)
- Transitions can now be set up to require a specific payload type and/or a gameplay tag
- Required transition event payload is visible to property bindind for transition conditions
- States can require an event type as enter condition, the event is captured when state is selected
- Required state event payload is visible to binding for state enter conditions, tasks and transistions

[CL 32113027 by bob tellez in ue5-main branch]
2024-03-07 23:49:50 -05:00
mikko mononen
cec24c894d StateTree: Added support for event payload in transitions and event capture for states. (contributed)
- Transitions can now be set up to require a specific payload type and/or a gameplay tag
- Required transition event payload is visible to property bindind for transition conditions
- States can require an event type as enter condition, the event is captured when state is selected
- Required state event payload is visible to binding for state enter conditions, tasks and transistions

[CL 32082269 by mikko mononen in ue5-main branch]
2024-03-07 06:53:02 -05:00
mikko mononen
e329242707 StateTree: Blueprint Property Ref.
- State Tree property ref which can be used in BP tasks

[CL 31470182 by mikko mononen in ue5-main branch]
2024-02-14 09:04:52 -05:00
mikko mononen
e669bb6cd9 StateTree: Added property references (get pointer to a property based on binding)
- Added FStateTreePropertyRef which allows to get pointer to bindable output properties in the StateTree
- This will eventually supercede FStateTreeStructRef

[CL 30563615 by mikko mononen in ue5-main branch]
2024-01-11 04:24:45 -05:00
mikko mononen
a500b14b6a StateTree: Changed how instance data is accessed
- Remove DataView concept
- Added FStateTreeExecutionFrame, which defines an active branch of a specific state tree that is running
- Added FStateTreeDataHandle, which allows frame relative access of instance data (replaces the DataViews)
- Changed linked states to spawn new frames (will later extend to handle linked trees on other assets)
- Bumped StateTree data version number, requires recomplation of StateTrees

#rb Yoan.StAmant

[CL 29884503 by mikko mononen in ue5-main branch]
2023-11-22 04:08:33 -05:00
grant medine
74338326da [Backout] - CL29805076
[FYI] mikko.mononen
Original CL Desc
-----------------------------------------------------------------
StateTree: Changed how instance data is accessed
- Remove DataView concept
- Added FStateTreeExecutionFrame, which defines an active branch of a specific state tree that is running
- Added FStateTreeDataHandle, which allows frame relative access of instance data (replaces the DataViews)
- Changed linked states to spawn new frames (will later extend to handle linked trees on other assets)
- Bumped StateTree data version number, requires recomplation of StateTrees

#rb Yoan.StAmant

[CL 29810071 by grant medine in ue5-main branch]
2023-11-17 11:42:17 -05:00
mikko mononen
72c488d0cf StateTree: Changed how instance data is accessed
- Remove DataView concept
- Added FStateTreeExecutionFrame, which defines an active branch of a specific state tree that is running
- Added FStateTreeDataHandle, which allows frame relative access of instance data (replaces the DataViews)
- Changed linked states to spawn new frames (will later extend to handle linked trees on other assets)
- Bumped StateTree data version number, requires recomplation of StateTrees

#rb Yoan.StAmant

[CL 29805087 by mikko mononen in ue5-main branch]
2023-11-17 07:41:08 -05:00
juan portillo
540c283bcc [StateTree]
Added test for "next selectable" transition type

#rb Mikko.Mononen
#jira UE-198276

[CL 28853257 by juan portillo in ue5-main branch]
2023-10-17 16:41:19 -04:00
yoan stamant
1e3df2603b [StateTree] Added deferred stop and validation for reentrant calls to Start/Stop/Tick.
#rb mikko.mononen

[CL 28133788 by yoan stamant in ue5-main branch]
2023-09-22 09:53:34 -04:00
mikko mononen
391e15d1d9 StateTree: Changed bindings to not derefernce soft objects during copy
[CL 27518455 by mikko mononen in ue5-main branch]
2023-08-31 08:03:46 -04:00
yoan stamant
3110bb501b On behalf of mikko.mononen
Original CL Desc
-----------------------------------------------------------------
StateTree: Improved reconciling property names when they change
- Added PropertyGuid to FStateTreePropertyPathSegment to allow reconsile changed Blueprint class and User Defined Struct property names
- Changed FStateTreePropertyPath to optionally handle property redirects and BP/UDS name changes
- Renamed UpdateInstanceStructsFromValue to UpdateSegmentsFromValue to better reflect the use
- Improved State Tree editor bindings to update when BP/UDS properties are changed

#jira UE-184193, UE-168168

[CL 26148754 by yoan stamant in ue5-main branch]
2023-06-21 10:25:47 -04:00
mikko mononen
866e20fbf7 [Backout] - CL26143160
[FYI] mikko.mononen
Original CL Desc
-----------------------------------------------------------------
StateTree: Improved reconciling property names when they change
- Added PropertyGuid to FStateTreePropertyPathSegment to allow reconsile changed Blueprint class and User Defined Struct property names
- Changed FStateTreePropertyPath to optionally handle property redirects and BP/UDS name changes
- Renamed UpdateInstanceStructsFromValue to UpdateSegmentsFromValue to better reflect the use
- Improved State Tree editor bindings to update when BP/UDS properties are changed

#jira UE-184193, UE-168168

[CL 26145857 by mikko mononen in ue5-main branch]
2023-06-21 08:49:48 -04:00
mikko mononen
0b159c4cd2 StateTree: Improved reconciling property names when they change
- Added PropertyGuid to FStateTreePropertyPathSegment to allow reconsile changed Blueprint class and User Defined Struct property names
- Changed FStateTreePropertyPath to optionally handle property redirects and BP/UDS name changes
- Renamed UpdateInstanceStructsFromValue to UpdateSegmentsFromValue to better reflect the use
- Improved State Tree editor bindings to update when BP/UDS properties are changed

#jira UE-184193, UE-168168

[CL 26143169 by mikko mononen in ue5-main branch]
2023-06-21 04:10:57 -04:00
mikko mononen
717ebca643 State Tree: Fix handling of subtree completion transitions.
[CL 25926321 by mikko mononen in ue5-main branch]
2023-06-12 07:34:11 -04:00
mikko mononen
0308e0f04a StateTree: Fixed and improved transition status reporting
- Allow to specify the completion status and terminal state when calling Stop() on State Tree exection context
- Global task's execution status directly translates to stree state on global EnterState (previously could just fail)
- Report terminal state transitions for global tasks (allows to use same task erro handling on states and global)
- Tie global task exection to the tree status, global tasks get ExitState() when transitioning to terminal state
- RequestTransition() was errorneuously reporting TreeRunStatus (instead of LastTickStatus) in Transition.CurrentRunStatus, this made it impossible to detect failed transitions on ExitState()

#preflight 647dae328b08a8b7939102ab

[CL 25789064 by mikko mononen in ue5-main branch]
2023-06-05 06:33:07 -04:00
mikko mononen
719a4fbc1d State Tree: Add specific state and status when the tree is stopped.
#preflight 645b86a32d27fa25b342163d

[CL 25403433 by mikko mononen in ue5-main branch]
2023-05-10 09:30:13 -04:00
mikko mononen
51aa286c45 State Tree: Added new selection behaviors for states
- Added selection behavior None (not selectable)
- Added selection behavior TryEnterState (enters the specific state, does not consider child states)
- Added selection behavior TryFollowTransitions (follows transitions when state is tried to be selected)
- Brushed up a bit the state representation in editor (added icons, cleaned up layout)

#preflight 6436843df12d5de705595942

[CL 25005118 by mikko mononen in ue5-main branch]
2023-04-12 07:59:16 -04:00
mikko mononen
364a52e761 StateTree: Fix indentation handling in FStateTreeCompiler::CreateConditions() which lead to a crash an uncorrect handling of nested expressions.
#preflight 642c08ba6a37fb35e91bfd64

[CL 24908918 by mikko mononen in ue5-main branch]
2023-04-04 08:25:50 -04:00
mikko mononen
c828983bd3 State Tree: fix delayed transitions
- Fixed bug where delayed transitions from events were not triggered properly.

#preflight 6410735f5819afacafa78ce4

[CL 24635553 by mikko mononen in ue5-main branch]
2023-03-14 10:40:47 -04:00
mikko mononen
69fc0b5edc StateTree: Sort property bindings based on layout.
- the bindings sent to the compiler are in order they were created
- sort the bindings so that e.g. copying and array and a speciific array item will first copy the earliest property (array) and then the rest (specific item)

#rb Mieszko.Zielinski
#preflight 63ef2b42500c05a624aff988

[CL 24278616 by mikko mononen in ue5-main branch]
2023-02-17 04:00:32 -05:00