Files
UnrealEngineUWP/Engine/Source/Editor/BlueprintGraph
thomas sarkanen f14bd09b5b AnimNext: Scheduler, Component and Parameter Improvements
Scheduler

Added schedule asset
Schedule builds a simple bytecode when edited/loaded/saved
Bytecode describes what tasks to run in order with what dependencies
Scheduler acts as an interface to the schedule world subssystem (so schedules can be run against specific worlds)
Schedule entry ultimately owns all the memory for a running schedule, mostly via the FScheduleInstanceData
Schedule is run via a graph of tick functions that are created on handle registration, held on the schedule entry

Component

Bare-bones component, still a few features to add (e.g. stopping starting ticking etc.)
Holds a handle to a parameterized schedule
Can update parameters by pushing them to named scopes in the schedule

Parameter Improvements

UI/UX

Changed parameter block workflow to be closer to how it works under the hood:
- Parameters are local state
- Graphs operate by writing local state (and reading local/global state)
- This means that parameters and graphs are created independently. Still TODO: setting defaults for parameters.
Added custom widget for selecting parameters (on pins at present - details panel still TODO)
Parameter picker can now create new parameters in-line.
Double-clicking a graph now opens it

Runtime

Patched up parameter blocks to work with the last set of RigVM refactors.
Rebased param block node, graph and schema to RigVM.
Re-duplicated compilation logic for parameter blocks. This should be subject to a later refactor to move the compilation our of URigVMBlueprint.
Switched property bag to create object ptr properties rather than raw object properties
Added support for attaching param stacks to anim BP execution, propagated from a schedule instance.
Consolidated specific layer memory ownership into stack layer storage types: FUObjectLayer and FInstancedPropertyBagLayer. Raw data layers are also still available.
Param stacks now have 'parent' stacks that they will differ to if values are not found in queries. This is used for task-level scopes. Tasks are assigned param stacks to run (and the graph of parent scopes is built) via the schedule instance data.
Param stack results API expanded so we can get ricer info from queries
Moved FParamStackLayer out of FParamStack
Added TLayerBuilder to allow raw data layers to be built out-of-line
Updated tests

#rb Nicholas.Frechette,Jaime.Cifuentes

[CL 28372599 by thomas sarkanen in ue5-main branch]
2023-10-02 07:31:20 -04:00
..