Module |
|
Header |
/Engine/Source/Runtime/MovieScene/Public/EntitySystem/MovieSceneBlenderSystem.h |
Include |
#include "EntitySystem/MovieSceneBlenderSystem.h" |
class UMovieSceneBlenderSystem : public UMovieSceneEntitySystem
Base class for all systems that blend data from multiple entities/components into a single entity
This system has direct coupling to TCompositePropertySystemManager and forms the basis for built-in blend modes in Sequencer (Absolute, Relative and Additive). Blend 'channels' are allocated in this system which define a many to one relationship by corresponding blend input(many)/output(one) components added to the relevant entities. Blend input and output channel components are uint16.
The class supports a maximum of 65535 blend channels.
Additionally, blender systems tag their inputs using the built in Absolute, Relative and Additive tags for efficient computation of each type of blending (this allows each blend type to be computed without branching).
A simple example of 3 blended floats is as follows: Entity Data: Inputs: float [float component], uint16 [blend channel input], [Absolute Tag] => [ { 100.f, 0 }, { 200.f, 1 } ] float [float component], uint16 [blend channel input], [Additive Tag] => [ { 50.f, 1} ] Outputs: float [float component], uint16 [blend channel output] => [ { 0.f, 0}, { 0.f, 1} ] To perform blending for this data, accumulation buffers are allocated per-blend-type, and each blend accumulates into the index of its blend channel input component. A final combination pass walks over blend channel outputs a writes the results into the result component from the accumulation buffer.
Name | Description | ||
---|---|---|---|
|
AllocatedBlendChannels |
Bit array specifying currently allocated blend channels |
Name | Description | |
---|---|---|
|
UMovieSceneBlenderSystem ( |
Name | Description | ||
---|---|---|---|
|
FMovieSceneB... |
AllocateBlendChannel() |
Allocate a new blend channel. |
|
CompactBlendChannels() |
||
|
TSubclassOf<... |
GetBlenderSystemClass ( |
Get a blender system class, given a blender system ID. |
|
FMovieSceneB... |
GetBlenderSystemID() |
Get the unique ID for a given blender system type. |
|
FMovieSceneB... |
GetBlenderSystemID() |
Get the unique ID for this blender system's underlying type. |
|
ReleaseBlendChannel ( |
Release a previously allocated blend channel. |
Name | Description | ||
---|---|---|---|
|
IsRelevantImpl |