- On breakpoint hit the tree view will select and focus on the associated state and event treeview will select the event that triggered the breakpoint
- added missing trace for exiting tasks
- scrub to the record time when breakpoint is hit so events tree view is synchronized to the right time (not the latest processed time)
#rb mikko.mononen
[CL 26268572 by yoan stamant in 5.3 branch]
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 26148894 by yoan stamant in 5.3 branch]
- added option to disable state transitions
- added state transition breakpoints
- fixed scrubbing not using the right time (analysis time instead of world simulation time) when hitting a breakpoint
- fixed new instance auto selection on record when previous selection is a stale subtrack
- added console variable `statetree.displayitemids` to display states, tasks and transitions Ids in the StateTreeEditor (details view and state treeview)
#rb mikko.mononen
[CL 26147565 by yoan stamant in 5.3 branch]
[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 26145994 by mikko mononen in 5.3 branch]
- 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 26143265 by mikko mononen in 5.3 branch]
- added support for breakpoint when exiting state (was only when entering)
- added support for breakpoint when entering or exiting a task
- state breakpoints can be added from contextual menu in the TreeView or from the Debug options in the details panel
- task breakpoints can be added from the Debug options in the details panel
- added feedback labels in the details panel for states and tasks with breakpoints
#rb mikko.mononen
[CL 26038123 by yoan stamant in 5.3 branch]
- Enabled UDS in the struct/property pickers
- Added support for reinstancing instanced struct & co when UDS layout changes
#preflight 64707629c34463d6e8bd9304
[CL 25646984 by mikko mononen in ue5-main branch]
- added traces for transitions
- support for recursive state selection
- fixed breakpoints not stopping execution since timelines were added
- added meta data to types used for event visualization
- forced expansion for all treeview items in frame details
#rnx
#rb mikko.mononen
#preflight 646cb538205f5d23d5206392
[CL 25582715 by yoan stamant in ue5-main branch]
This allows your assets to warn on top of erroring out.
#jira UE-183475
#preflight 644ae7701c2846595cbe0e21
[CL 25224515 by jodon karlik in ue5-main branch]
- Fixes a crash in property bindings which tried to access data based on the old BP class layout
#preflight 64394feb9566b61450e4c856
[CL 25049335 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]
- refactored the property binding representation, editor binding shave now more structure, and removed intermediate representation
- added functionality to resolve property paths agains a known value
- added instanced struct and object indirection types
- added editor functionality to allow to bind to further than first level of properties
- refactored editor tree traversal, allow to access values too
- simplified statetree node ui
- requires to recompile trees, bumped version
#rb Mieszko.Zielinski
#preflight 63e6204ff15c83b79312aca5
[CL 24117094 by mikko mononen 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]
List of optimizations and changes:
* Token stream structure
* Split token stream into strong-only and a mixed (weak+strong) stream
* Split token stream into a builder and a tighter view class which reduces sizeof(UClass)
* Implemented ref-counted token stream view sharing
* Removed Class and Outer from token stream
* Allow empty token streams (enabled by removing Class/Outer) to avoid touching token stream data
* Placed ARO (AddReferencedObjects) last to reduce per object cache thrashing, improve control flow predicability and avoid reading the last EndOfPointer and EndOfStream tokens
* FPrefetchingObjectIterator that bring in Class/Outer, class' tokenstream view and the first token data ahead of time
* Decode token bitfield once and ahead of time
* Reference queues and batch processing
* Introduced bounded queues: ref arrays -> unvalidated refs -> validated (non-null / non-permanent) refs
* Split all these queues for killable vs immutable references
* Stack-living references still handled synchronously. With removal of Class/Outer (prefetched ahead of time) few instances remain outside of ARO calls.
* Outer queues hold 32 items and get flushed when full.
* AddReferencedObjects (ARO) optimizations
* Misc optimizations in many ARO implementations
* New FReferenceCollector API to queue up ARO references (AddStableReference), old sync API (HandleObjectReference) still available
* New AddPropertyReferences traversal that replaces SerializeBin and PropertyValueIterator
* 4.5x faster than PropertyValueIterator
* Uses CLASSCAST dispatch instead of virtual SerializeItem dispatch.
* Step towards new unified token stream replacement shared by class token processing, structs and ARO
* Replaced StructUtil::AddReferencedObjects with AddPropertyReferences traversal, ~8x speedup and collects more references for CitySample
* Parallelism
* Single long-running task per worker
* Improved work-stealing / load-balancing, workers can steal full blocks, ARO calls and initial references
* Queue up slow ARO calls to improve load balancing and avoid late stragglers. Motivated by certain ARO calls taking over 2ms for a few specific objects.
* Kick tasks manually to avoid ParallelFor end synchronization
* FGCObject
* Initial reference collector runs in parallel with mark phase
* New FGCObject constructor API (AddStableNativeReferencesOnly) to opt-in to initial reference collection, used by StreamableManager
* Same constructor API allows FGCObjects to defer registration until they become active (RegisterLater), reduces number of active GCObjects
* Reduced memory usage
* Allocate reached objects in scratch pages (FWorkBlock) and reuse processed blocks, instead of swapping two big TArray<UObject*> per worker
* Reduced sizeof(UClass)
* Shareable token streams
* Misc optimizations
* New API to test if an object is in the permanent object pool. Old API read two global pointers for every visited reference.
* Fixed signed integer usage in GUObjectArray lookup that led to bad codegen
* FPropertyIterator optimizations
* SerializeBin optimizations
* Other changes
* Moved many helpers into UE::GC namespace
* Replaced TFastReferenceCollector API with simplified CollectReferences call. Needed to break this API any way.
* Introduced FGCInternals to avoid forward-declaring TFastReferenceCollector and depend on the options enum in common headers
* Moved and outlined code from GarbageCollection.h / FastReferenceCollector.h to GarbageCollection.cpp
* Moved GC History and Garbage Reference Tracking into a synchronous TDebugReachabilityProcessor
* Removed PersistentGarbage flag since it wasn't used in practice
* Improved const correctness
#rb robert.millar,robert.manuszewski,pj.kack
#preflight 63945bf45624e6da5ec85f88
#jira UE-169791
[CL 23475562 by johan torp in ue5-main branch]