UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::MovieScene::FInterrogationChannels Class Reference

#include <MovieSceneInterrogationLinker.h>

Public Member Functions

MOVIESCENETRACKS_API FInterrogationChannels ()
 
MOVIESCENETRACKS_API ~FInterrogationChannels ()
 
MOVIESCENETRACKS_API void Reset ()
 
const FSparseInterrogationChannelInfoGetSparseChannelInfo () const
 
MOVIESCENETRACKS_API FInterrogationChannel AllocateChannel (FInterrogationChannel ParentChannel, const FMovieScenePropertyBinding &PropertyBinding)
 
MOVIESCENETRACKS_API FInterrogationChannel AllocateChannel (UObject *Object, const FMovieScenePropertyBinding &PropertyBinding)
 
MOVIESCENETRACKS_API FInterrogationChannel AllocateChannel (UObject *Object, FInterrogationChannel ParentChannel, const FMovieScenePropertyBinding &PropertyBinding)
 
MOVIESCENETRACKS_API FInterrogationChannel AllocateUnboundChannel (FInterrogationChannel ParentChannel, const FTransform &CurrentValueLocalSpace)
 
MOVIESCENETRACKS_API FInterrogationChannel ImportTransformHierarchy (USceneComponent *SceneComponent)
 
MOVIESCENETRACKS_API FInterrogationChannel FindChannel (UObject *Object)
 
MOVIESCENETRACKS_API void ActivateChannel (FInterrogationChannel InChannel)
 
MOVIESCENETRACKS_API void DeactivateChannel (FInterrogationChannel InChannel)
 
MOVIESCENETRACKS_API int32 AddInterrogation (const FInterrogationParams &Params)
 
int32 GetNumChannels () const
 
TArrayView< const FInterrogationParamsGetInterrogations () const
 
MOVIESCENETRACKS_API void QueryLocalSpaceTransforms (UMovieSceneEntitySystemLinker *Linker, USceneComponent *SceneComponent, TArray< FIntermediate3DTransform > &OutTransforms) const
 
MOVIESCENETRACKS_API void QueryLocalSpaceTransforms (UMovieSceneEntitySystemLinker *Linker, FInterrogationChannel InChannel, TArray< FIntermediate3DTransform > &OutTransforms) const
 
MOVIESCENETRACKS_API void QueryLocalSpaceTransforms (UMovieSceneEntitySystemLinker *Linker, TSparseArray< TArray< FIntermediate3DTransform > > &OutTransformsByChannel) const
 
MOVIESCENETRACKS_API void QueryLocalSpaceTransforms (UMovieSceneEntitySystemLinker *Linker, const TBitArray<> &ChannelsToQuery, TSparseArray< TArray< FIntermediate3DTransform > > &OutTransformsByChannel) const
 
MOVIESCENETRACKS_API void QueryWorldSpaceTransforms (UMovieSceneEntitySystemLinker *Linker, USceneComponent *SceneComponent, TArray< FTransform > &OutTransforms) const
 
MOVIESCENETRACKS_API void QueryWorldSpaceTransforms (UMovieSceneEntitySystemLinker *Linker, FInterrogationChannel InChannel, TArray< FTransform > &OutTransforms) const
 
MOVIESCENETRACKS_API void QueryWorldSpaceTransforms (UMovieSceneEntitySystemLinker *Linker, TSparseArray< TArray< FTransform > > &OutTransformsByChannel) const
 
MOVIESCENETRACKS_API void QueryWorldSpaceTransforms (UMovieSceneEntitySystemLinker *Linker, const TBitArray<> &ChannelsToQuery, TSparseArray< TArray< FTransform > > &OutTransformsByChannel) const
 
MOVIESCENETRACKS_API void QueryTransformOrigins (UMovieSceneEntitySystemLinker *Linker, const FMovieSceneSequenceHierarchy *Hierarchy, TArray< FTransform > &OutTransformOrigins, TArray< FMovieSceneSequenceID > &SubsequenceHierarchy, const UObject *InstanceData) const
 

Protected Attributes

TMap< FObjectKey, FInterrogationChannelObjectToChannel
 
FSparseInterrogationChannelInfo SparseChannelInfo
 
TBitArray ActiveChannelBits
 
TArray< FInterrogationParamsInterrogations
 

Detailed Description

A class specialized for interrogating Sequencer entity data without applying any state to objects. Currently only tracks within the same time-base are supported. Will not link systems that are in the custom "ExcludedFromInterrogation" category. Multiple different outputs can be interrogated simultaneously by Importing tracks onto separate channels allocated through AllocateChannel.

Systems may implement their own interrogation logic that can be run after updates to allow third-party interrogation behavior for specific channels or time.

Example usage: Interrogator.ImportTrack(MyTrack, FInterrogationChannel::Default());

for (int32 FrameNumber = 0; FrameNumber < 100; ++FrameNumber) Interrogator.InterrogateTime(FrameNumber);

Interrogator.Update();

UMyTrackSystem* MySystem = Interrogator.GetLinker()->FindSystem<UMyTrackSystem>(); if (MySystem) { TArray<DataType> OutData; MySystem->Interrogate(FInterogationKey::Default(), OutData); }

Constructor & Destructor Documentation

◆ FInterrogationChannels()

UE::MovieScene::FInterrogationChannels::FInterrogationChannels ( )

◆ ~FInterrogationChannels()

UE::MovieScene::FInterrogationChannels::~FInterrogationChannels ( )

Member Function Documentation

◆ ActivateChannel()

void UE::MovieScene::FInterrogationChannels::ActivateChannel ( FInterrogationChannel  InChannel)

Called to activate the specified channel. Inactive channels will only ever use their object's current value.

Parameters
InChannelThe channel to activate

◆ AddInterrogation()

int32 UE::MovieScene::FInterrogationChannels::AddInterrogation ( const FInterrogationParams Params)

Add a new time to interrogate this linker at, in the time-base of the imported tracks.

Parameters
ParamsThe desired time to interrogate at
Returns
A unique index identifier for the specified time, or INDEX_NONE if the maximum number have been reached

◆ AllocateChannel() [1/3]

FInterrogationChannel UE::MovieScene::FInterrogationChannels::AllocateChannel ( FInterrogationChannel  ParentChannel,
const FMovieScenePropertyBinding PropertyBinding 
)

Allocate a new interrogation channel that can be used to uniquely identify groups of tracks that animate the same property or output.

Parameters
ParentChannelThe channel that should be considered this channel's parent, or FInterrogationChannel::Invalid if there is none
Returns
A new interrogation channel

◆ AllocateChannel() [2/3]

FInterrogationChannel UE::MovieScene::FInterrogationChannels::AllocateChannel ( UObject Object,
const FMovieScenePropertyBinding PropertyBinding 
)

Allocate a new interrogation channel that relates to a specific object

◆ AllocateChannel() [3/3]

FInterrogationChannel UE::MovieScene::FInterrogationChannels::AllocateChannel ( UObject Object,
FInterrogationChannel  ParentChannel,
const FMovieScenePropertyBinding PropertyBinding 
)

Allocate a new interrogation channel that relates to a specific object

◆ AllocateUnboundChannel()

MOVIESCENETRACKS_API FInterrogationChannel UE::MovieScene::FInterrogationChannels::AllocateUnboundChannel ( FInterrogationChannel  ParentChannel,
const FTransform CurrentValueLocalSpace 
)

Allocate a new channel for a set of transform tracks that isn't bound to any particular object (but can still exist within a hierarchy)

Parameters
ParentChannelThe channel that should be considered this channel's parent, or FInterrogationChannel::Invalid if there is none
CurrentValueA value to use if this channel has now animated data after the interrogation
Returns
A new interrogation channel that can be passed to ImportUnboundTrack

◆ DeactivateChannel()

void UE::MovieScene::FInterrogationChannels::DeactivateChannel ( FInterrogationChannel  InChannel)

Called to deactivate the specified channel. Inactive channels will only ever use their object's current value.

Parameters
InChannelThe channel to deactivate

◆ FindChannel()

FInterrogationChannel UE::MovieScene::FInterrogationChannels::FindChannel ( UObject Object)

Find the existing interrogation channel for the specified object

Parameters
ObjectThe object to find a channel for
Returns
The (potentially invalid) interrogation channel that the specified object is on

◆ GetInterrogations()

TArrayView< const FInterrogationParams > UE::MovieScene::FInterrogationChannels::GetInterrogations ( ) const
inline

Retrieve the current interrogations

◆ GetNumChannels()

int32 UE::MovieScene::FInterrogationChannels::GetNumChannels ( ) const
inline

Retrieve the number of channels allocated

◆ GetSparseChannelInfo()

const FSparseInterrogationChannelInfo & UE::MovieScene::FInterrogationChannels::GetSparseChannelInfo ( ) const
inline

◆ ImportTransformHierarchy()

MOVIESCENETRACKS_API FInterrogationChannel UE::MovieScene::FInterrogationChannels::ImportTransformHierarchy ( USceneComponent *  SceneComponent)

Import the entire transform hierarchy for the specified component, including all attached parents and tracks relating to them.

Parameters
SceneComponentThe scene component to import. A new channel will be allocated for this if one does not already exist.
InPlayerThe player interface to use for looking up object binding IDs pertaining to scene components or actors
SequenceIDThe current sequence ID for the interrogation
Returns
The channel that was either pre-existing or allocated for SceneComponent

◆ QueryLocalSpaceTransforms() [1/4]

void UE::MovieScene::FInterrogationChannels::QueryLocalSpaceTransforms ( UMovieSceneEntitySystemLinker Linker,
const TBitArray<> &  ChannelsToQuery,
TSparseArray< TArray< FIntermediate3DTransform > > &  OutTransformsByChannel 
) const

Query a specific set of channels for their local space transforms as defined by set bits within ChannelsToQuery

Parameters
ChannelsToQueryBit array containing set bits for each channel to query
OutTransformsByChannelSparse array to receive transforms allocated by their Channel index

◆ QueryLocalSpaceTransforms() [2/4]

void UE::MovieScene::FInterrogationChannels::QueryLocalSpaceTransforms ( UMovieSceneEntitySystemLinker Linker,
FInterrogationChannel  InChannel,
TArray< FIntermediate3DTransform > &  OutTransforms 
) const

Query local space transforms

Parameters
InChannelThe channel to query
OutTransformsArray to output transforms into, one per Interrogation

◆ QueryLocalSpaceTransforms() [3/4]

void UE::MovieScene::FInterrogationChannels::QueryLocalSpaceTransforms ( UMovieSceneEntitySystemLinker Linker,
TSparseArray< TArray< FIntermediate3DTransform > > &  OutTransformsByChannel 
) const

Query all local space transforms, even including channels that do not have any variable track data

Parameters
OutTransformsByChannelSparse array to receive transforms allocated by their Channel index

◆ QueryLocalSpaceTransforms() [4/4]

void UE::MovieScene::FInterrogationChannels::QueryLocalSpaceTransforms ( UMovieSceneEntitySystemLinker Linker,
USceneComponent *  SceneComponent,
TArray< FIntermediate3DTransform > &  OutTransforms 
) const

Query local space transforms

Parameters
SceneComponentThe scene component to query
OutTransformsArray to output transforms into, one per Interrogation

◆ QueryTransformOrigins()

void UE::MovieScene::FInterrogationChannels::QueryTransformOrigins ( UMovieSceneEntitySystemLinker Linker,
const FMovieSceneSequenceHierarchy Hierarchy,
TArray< FTransform > &  OutTransformOrigins,
TArray< FMovieSceneSequenceID > &  SubsequenceHierarchy,
const UObject InstanceData 
) const

◆ QueryWorldSpaceTransforms() [1/4]

void UE::MovieScene::FInterrogationChannels::QueryWorldSpaceTransforms ( UMovieSceneEntitySystemLinker Linker,
const TBitArray<> &  ChannelsToQuery,
TSparseArray< TArray< FTransform > > &  OutTransformsByChannel 
) const

Query a specific set of channels for their world space transforms as defined by set bits within ChannelsToQuery

Parameters
ChannelsToQueryBit array containing set bits for each channel to query
OutTransformsByChannelSparse array to receive transforms allocated by their Channel index

◆ QueryWorldSpaceTransforms() [2/4]

void UE::MovieScene::FInterrogationChannels::QueryWorldSpaceTransforms ( UMovieSceneEntitySystemLinker Linker,
FInterrogationChannel  InChannel,
TArray< FTransform > &  OutTransforms 
) const

Query world space transforms for a channel

Parameters
InChannelThe channel to query
OutTransformsArray to output transforms into, one per Interrogation

◆ QueryWorldSpaceTransforms() [3/4]

void UE::MovieScene::FInterrogationChannels::QueryWorldSpaceTransforms ( UMovieSceneEntitySystemLinker Linker,
TSparseArray< TArray< FTransform > > &  OutTransformsByChannel 
) const

Query all world space transforms, even including channels that do not have any variable track data

Parameters
OutTransformsByChannelSparse array to receive transforms allocated by their Channel index

◆ QueryWorldSpaceTransforms() [4/4]

void UE::MovieScene::FInterrogationChannels::QueryWorldSpaceTransforms ( UMovieSceneEntitySystemLinker Linker,
USceneComponent *  SceneComponent,
TArray< FTransform > &  OutTransforms 
) const

Query world space transforms for a component

Parameters
SceneComponentThe scene component to query
OutTransformsArray to output transforms into, one per Interrogation

◆ Reset()

void UE::MovieScene::FInterrogationChannels::Reset ( )

Member Data Documentation

◆ ActiveChannelBits

TBitArray UE::MovieScene::FInterrogationChannels::ActiveChannelBits
protected

BitArray containing set bits for any channel that has data associated with it. The number of bits (0 or 1) in this array defines how many channels are allocated

◆ Interrogations

TArray<FInterrogationParams> UE::MovieScene::FInterrogationChannels::Interrogations
protected

An array of interrogation times

◆ ObjectToChannel

TMap<FObjectKey, FInterrogationChannel> UE::MovieScene::FInterrogationChannels::ObjectToChannel
protected

Map from an object to its interrogation channel

◆ SparseChannelInfo

FSparseInterrogationChannelInfo UE::MovieScene::FInterrogationChannels::SparseChannelInfo
protected

Array of information pertaining to a given channel


The documentation for this class was generated from the following files: