- 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]
Initial version of the debugger
- currently compiled by StateTreeModule and StateTreeEditorModule using WITH_STATETREE_DEBUGGER
- currently not exposed to UI by StateTree settings 'bUseDebugger'
- in this version only one instance per asset can be debugged
- using Trace services to read events generated by statetree instances.
- can connect to any traces (Editor, Client, Server) as long as the compiled statetree matches
#rb mieszko.zielinski
#preflight 641088a30e1f02786b509663
[CL 24639409 by yoan stamant in ue5-main branch]
Also removed the Mutable named functions and replaced with the constness being part of the template.
#preflight 63ea4fbaec50523134d85665
[CL 24197313 by stephen holmes in ue5-main branch]
* Ran IWYU on ~170 plugins to remove includes not needed. Public api still keep old includes inside #if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_2
#preflight 63d09351574ab9cae4670216
#rb none
[CL 23844750 by henrik karlsson in ue5-main branch]
- Added ability for tasks to request transitions
- Added buffered transition requests
- Added callback method to FStateTreeTaskBase which is called during transition triggering
- Allow FStateTreeStateLink to be added to tasks and conditions (resolved automatically during compile)
#jira UE-174250
#preflight 63ca7ee8977c62635603afcb
[CL 23815873 by mikko mononen in ue5-main branch]
- Calling GetStateTreeRunStatus() on unintialized instance is not error anymore, returns failed
- Made UStateTreeComponent::GetStateTreeRunStatus() to return failed instead of unset to be consistent with FStateTreeExecutionContext
- Allow to access execution state directly from instance data without exec context
- Do no crete exec context in UStateTreeComponent when sending events
#jira UE-173207
#preflight 63bfec4af02e72c08cab1811
[CL 23661828 by mikko mononen in ue5-main branch]
- Added global tasks which are run at tree level similar to evals (will replace evals)
- allows initial state selection to rely in calculated data (e.g. world conditions)
- allows better reuse of existing logic
- Call evaluator stop in reverse order
- Use some uses of mutable instanced structs
- Copy bindings along with ST nodes
- Remove bindings when removing a ST node, so that undo can restore them
#rb Yoan.StAmant
#preflight 63bd2c7968068a8bd6395d2c
[CL 23632408 by mikko mononen in ue5-main branch]
- Removed gated delay (transition will be delayed until it has been "pressed" for N seconds)
- Delay now triggers after the delay duration has passed (single trigger, not "pressed", works with events too)
- Added random variation for the delay
- Tick/Event transitions has precedence over completion transitions (that is, they are handled before completion transitions)
- Removed delay and blocking from completion transitions
- Small improvements for transitions UI
#rb Mieszko.Zielinski
#preflight 6389e0b435192facc1b95cdb
[CL 23371519 by mikko mononen in ue5-main branch]
- Use hierarchical GamplayTag match when matchin transition event tags
- When returning succeed/failed fomr a subtree, handle it as if the linked state was completed
- Call Stop() before initializing the instance data on Start() to avoid the instance data to be overritten by Stop()
- Early out Stop() if the tree is not running
- Fixed failed transition not setting OutTransition.CurrentActiveStates correctly
#preflight 637e12ee8b12eb83a71bb694
[CL 23248889 by mikko mononen in ue5-main branch]
- record the first completed state on EnterState() and TickTasks()
- returning succeeded on any node in EnterState() now behaves the same as returning succeeded on Tick()
#rb Mieszko.Zielinski
#preflight 637caf2df514e1ded9f280e4
[CL 23233890 by mikko mononen in ue5-main branch]
- restored deprecation (was comments out due to submitting code via multiple CLs)
- cleaned up logging
- skip property binding to not take place when task is not ticked
#rb Mieszko.Zielinski
#preflight 636373961608da6ba1c3a8f2
[CL 22959061 by mikko mononen in ue5-main branch]
- Moved event queue to it's own struct
- Changed the SendEvent() API to accept struct view to prevent instanced struct copy in common cases
- Fixed event handling in case EnterState() fails.
- Added option for Tasks to disavble ticking, or to be ticked only when there are events
- Added option for Tasks handle when properties are copied
- Changed DebugText to use external Actor reference
- Changed DelayTask to use the new GetInstanceData which does not need type
- Added TStateTreeInstanceDataStructRef which can be used to access struct instance data in delegates
#rb Maxime.Mercier Luciano.Ferraro
#preflight 6360dd302b5338aceb2d0343
[CL 22888708 by mikko mononen in ue5-main branch]
- Cleaned up Blueprint nodes from deprecated functions
- Added call guards for BP implemented events on BP nodes
- Renamed Named External Data to Context (Object/Data)
- Added automatic binding for Context objects
- Added UI visualization for Context properties and cleaned up the Input/Ouput visualization
- Added compiler errors for missing Input and Context properties
#jira UE-156544 UE-147509
#rb Stephen.Holmes
[CL 22084585 by mikko mononen in ue5-main branch]
- added thread safe access to shared instance data (each thread gets a copy)
- fixed Item->Node in the editor node API
#jira UE-153269
#rb Mieszko.Zielinski
[CL 21862712 by mikko mononen in ue5-main branch]
- Added StateTree events, which allows e.g. transitions based on internal or external events
- Clarified transition nomenclature
- Update UI to support transition events
- BP support for events
- Renamed UStateTreeItemBase to UStateTreeNodeBase for consistency with FStateTreeNodeBase
#jira UE-156543
#rb Mieszko.Zielinski
#preflight 631077ef660db81edbd068ca
[CL 21738918 by mikko mononen in ue5-main branch]
- added functionality to allow to use property binding to get pointer to another struct property
- converted mass smart object and movement tasks to use struct ref
#jira none
#robomerge EngineMerge
#rb Yoan.StAmant
#preflight 62bc0d51e353c20ac23fbf39
[CL 20871790 by mikko mononen in ue5-main branch]
- Changed FStateTreeHandle to FStateTreeStateHandle, used only for indexing states
- Added uint16 and uin8 index types, which can represent invalid index (aka INDEX_NONE)
- Changed indices that can be optional to the index types above
- Added validation and error loggic when index types overflow during compile
- Removed 2 indirections (in common case) and halved the memory usage of property copies
#jira none
#rb Mieszko.Zielinski
#preflight 6295d26e91004dd61ced370b
[CL 20434838 by mikko mononen in ue5-main branch]
- Commented and cleaned up the members of UStateTree a bit
- Changed StateTree Node storage to FInstancedStructArray (contiguous memory)
- Changed StateTree SharedData to FInstancedStructArray
- Changed StateTree instance data to use FInstancedStructArray
- StateTree statistics shows estimated mem usage per state and max for tree (heaviest linked chain)
- Added explicit bLinked state for UStateTree
- Cleaned up UStateTree::ResetCompiled()/ResetLinked()
- Changed StateTree execution context to allocate task instance data on Start() and EnterState()
- StateTree tick uses execution order counters to access the instance data instead of compile time specific index
#jira UE-153269
#rb Stephen.Holmes Yoan.StAmant
#preflight 628df39faf7a2e956bb45dc5
[CL 20361823 by mikko mononen in ue5-main branch]
- Deprecated per state evaluators and moved them to global to the tree
- Tick evals once per Tick()
- Updated editor node customizations to work on UStateTreeEditorData
- Added separate detail customization for UStateTreeEditorData
#jira UE-147508
#rb Yoan.StAmant
#preflight 62820e55046b81bf93911605
[CL 20221385 by mikko mononen in ue5-main branch]