Navigation
API > API/Runtime > API/Runtime/MovieScene > API/Runtime/MovieScene/EntitySystem
Inheritance Hierarchy
- UObject
- UMovieSceneEntitySystem
- UMovieSceneBlenderSystem
References
Module | MovieScene |
Header | /Engine/Source/Runtime/MovieScene/Public/EntitySystem/MovieSceneBlenderSystem.h |
Include | #include "EntitySystem/MovieSceneBlenderSystem.h" |
Syntax
UCLASS (Abstract, MinimalAPI)
class UMovieSceneBlenderSystem : public UMovieSceneEntitySystem
Remarks
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.
Variables
Type | Name | Description | |
---|---|---|---|
![]() |
TBitArray | AllocatedBlendChannels | Bit array specifying currently allocated blend channels |
![]() |
int32 | SelectionPriority | Priority to use when selecting a blender system for a given set of entities. |
Constructors
Type | Name | Description | |
---|---|---|---|
![]() |
UMovieSceneBlenderSystem
(
const FObjectInitializer& ObjInit |
Functions
Type | Name | Description | |
---|---|---|---|
![]() |
FMovieSceneBlendChannelID | Allocate a new blend channel. | |
![]() |
void | ||
![]() ![]() |
TSubclassOf< UMovieSceneBlenderSystem > | GetBlenderSystemClass
(
FMovieSceneBlenderSystemID InSystemID |
Get a blender system class, given a blender system ID. |
![]() ![]() |
FMovieSceneBlenderSystemID | Get the unique ID for a given blender system type. | |
![]() ![]() |
FMovieSceneBlenderSystemID | Get the unique ID for this blender system's underlying type. | |
![]() ![]() |
UE::MovieScene::FComponentTypeID | Retrieve the tag that should accompany any blend input and output components to be used by this blender | |
![]() ![]() |
int32 | Retrieve the selection priority to use when choosing a blender system. Highest wins. | |
![]() |
void | ReleaseBlendChannel
(
FMovieSceneBlendChannelID BlendChannelID |
Release a previously allocated blend channel. |
Overridden from UMovieSceneEntitySystem
Type | Name | Description | |
---|---|---|---|
![]() ![]() ![]() |
bool | IsRelevantImpl
(
UMovieSceneEntitySystemLinker* InLinker |
Constants
Name | Description |
---|---|
DefaultPriority | Default blender system priority. Higher priorities win, negative priorities are supported. |