Commit Graph

393 Commits

Author SHA1 Message Date
yoan stamant
1aafe8d726 [StateTreeDebugger] replaced debug serial number mappings by single global counter.
#rnx
#rb maxime.mercier
#preflight 64130c30290c6e5d77d528b9

[CL 24672052 by yoan stamant in ue5-main branch]
2023-03-16 11:43:35 -04:00
yoan stamant
8c35447677 [StateTree] trivial changes from review
#rnx
#rb trivial
#preflight skip

[CL 24655890 by yoan stamant in ue5-main branch]
2023-03-15 11:59:44 -04:00
yoan stamant
4c372a0e40 Fix CIS Issue 275930
#rnx
#rb trivial
#preflight skip

[CL 24655550 by yoan stamant in ue5-main branch]
2023-03-15 11:39:22 -04:00
yoan stamant
0f0d466f65 Tentative CIS fix by not compiling StateTree debugger for non win64 platforms
#preflight skip
#rb none

[CL 24639438 by yoan stamant in ue5-main branch]
2023-03-14 13:37:39 -04:00
yoan stamant
64c8dca7cb [StateTreeDebugger]
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]
2023-03-14 13:35:46 -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
764e166e5b StateTree: Fixed crashes when compiled data is not loaded properly (e.g. some structs not loaded)
#rb Yoan.StAmant
#preflight 6409ade0a450329d6c1750b0

[CL 24573646 by mikko mononen in ue5-main branch]
2023-03-09 06:35:16 -05:00
stephen holmes
97766341ea Refactored FSructView and FConstStructView as per recent meetings. Both are now const correct in the same way TArrayView and TArrayConstView are (ie const FStructView and const FConstStructView) the view can not point at another view.
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]
2023-02-13 20:06:02 -05:00
mikko mononen
58185353d0 StateTree: Fix extra %s when logging in FStateTreePropertyBindings::ResolvePaths()
#preflight 63e64cf0fc6763d8b5cc4683

[CL 24119629 by mikko mononen in ue5-main branch]
2023-02-10 10:44:54 -05:00
mikko mononen
34a1e22051 StateTree: Allow to bind to deep property paths (including arrays and instanced struct/object)
- 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]
2023-02-10 07:22:48 -05:00
mikko mononen
653d387d74 StateTree: Revert clearing data views in UpdateInstanceData() as it was parameters and external data too.
#preflight 63e5f8aaf15c83b79301ac15

[CL 24116342 by mikko mononen in ue5-main branch]
2023-02-10 04:19:40 -05:00
mikko mononen
88b7fae0e7 StateTree: fix eval & global task dataviews after UpdateInstanceData.
#jira UE-176091
#rb Mieszko.Zielinski
#preflight 63e49a5004684547086aa714

[CL 24094032 by mikko mononen in ue5-main branch]
2023-02-09 04:20:59 -05:00
mikko mononen
2e9d640c0a StateTree: Handle objects in instance data migrationvis serialization
#preflight 63e49577797b029c0aad7cce

[CL 24094030 by mikko mononen in ue5-main branch]
2023-02-09 04:20:54 -05:00
henrik karlsson
9a1d5b1ad4 [Engine/Plugins]
* 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]
2023-01-25 02:42:36 -05:00
christopher waters
2285d21e63 Removing TaskGraphInterfaces.h include from CoreDelegates.h
[CL 23836502 by christopher waters in ue5-main branch]
2023-01-24 15:07:59 -05:00
bob tellez
6e7878c698 #StateTree Downgrade warning to display for now
[FYI] mikko.mononen
#preflight trivial

[CL 23827147 by bob tellez in ue5-main branch]
2023-01-24 00:27:06 -05:00
mikko mononen
e2fd3455a9 StateTree: Allow tasks to request transitions
- 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]
2023-01-23 12:48:04 -05:00
henrik karlsson
9183978e29 [Engine/Plugins]
* Removed includes (using IWYU) in private files

#preflight 63c79978ac35a0e9dabbe408
#rb none

[CL 23770038 by henrik karlsson in ue5-main branch]
2023-01-19 00:48:07 -05:00
mikko mononen
fb1a0fad3d StateTree: Fix mutable uses of instanced structs and struct views.
#jira UE-172049
#rb Mieszko.Zielinski
#preflight 63c002ab577437afe6358e84

[CL 23662521 by mikko mononen in ue5-main branch]
2023-01-12 09:45:58 -05:00
mikko mononen
57a0d8a492 StateTree: More graceful handling of GetStateTreeRunStatus()
- 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]
2023-01-12 09:00:45 -05:00
mikko mononen
29f4ff63e1 StateTree: bump external data handly type to 16bits to not limit max nodes to 254.
#rb Mieszko.Zielinski
#preflight 63be8591d862fdd347408bef

[CL 23648546 by mikko mononen in ue5-main branch]
2023-01-11 12:44:01 -05:00
mikko mononen
d30ad5127b State Tree: new node picker
- added class picker style new node picker with search box and categories

#rb Mieszko.Zielinski
#preflight 63be76206e6e8d4662c637fb

[CL 23643504 by mikko mononen in ue5-main branch]
2023-01-11 05:08:00 -05:00
mikko mononen
ab3816dd30 StateTree: Added global tasks
- 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]
2023-01-10 15:44:28 -05:00
foobit
7c8f7ac6fe PR #9830: [StateTree] StateTreeComponent.GetStateTreeRunStatus method and status delegate (Contributed by foobit)
#rb Mikko.Mononen
#preflight 639c374143330e63e5bb8fd0

[CL 23536754 by foobit in ue5-main branch]
2022-12-16 05:45:13 -05:00
johan torp
146b21d3d4 GC reachability optimizations. ~1.5x speedup and ~2.5MB memory saved for an internal title.
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]
2022-12-11 23:21:18 -05:00