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

#include <MovieSceneInterrogationLinker.h>

+ Inheritance diagram for UE::MovieScene::FSystemInterrogator:

Classes

struct  FExtraMetaData
 

Public Member Functions

MOVIESCENETRACKS_API FSystemInterrogator ()
 
MOVIESCENETRACKS_API ~FSystemInterrogator ()
 
FInterrogationChannel AllocateChannel (UObject *Object, const FMovieScenePropertyBinding &PropertyBinding)
 
MOVIESCENETRACKS_API void ImportTrack (UMovieSceneTrack *Track, FInterrogationChannel InChannel, FMovieSceneSequenceID SequenceID=MovieSceneSequenceID::Invalid)
 
MOVIESCENETRACKS_API void ImportTrack (UMovieSceneTrack *Track, const FGuid &ObjectBindingID, FInterrogationChannel InChannel, FMovieSceneSequenceID SequenceID=MovieSceneSequenceID::Invalid)
 
MOVIESCENETRACKS_API FInterrogationChannel ImportTransformHierarchy (USceneComponent *SceneComponent, IMovieScenePlayer *InPlayer, FMovieSceneSequenceID SequenceID)
 
MOVIESCENETRACKS_API FInterrogationChannel ImportLocalTransforms (USceneComponent *SceneComponent, IMovieScenePlayer *InPlayer, FMovieSceneSequenceID SequenceID)
 
void ImportTracks (TArrayView< UMovieSceneTrack *const > Tracks, FInterrogationChannel InChannel)
 
void ImportTracks (TArrayView< UMovieSceneTrack *const > Tracks, const FGuid &ObjectBindingID, FInterrogationChannel InChannel)
 
MOVIESCENETRACKS_API int32 AddInterrogation (const FInterrogationParams &Params)
 
MOVIESCENETRACKS_API void Update ()
 
MOVIESCENETRACKS_API void Reset ()
 
MOVIESCENETRACKS_API void TrackImportedEntities (bool bInTrackImportedEntities)
 
MOVIESCENETRACKS_API FMovieSceneEntityID FindEntityFromOwner (FInterrogationKey InterrogationKey, UObject *Owner, uint32 EntityID) const
 
UMovieSceneEntitySystemLinkerGetLinker () const
 
int32 GetNumChannels () const
 
TArrayView< const FInterrogationParamsGetInterrogations () const
 
void QueryLocalSpaceTransforms (USceneComponent *SceneComponent, TArray< FIntermediate3DTransform > &OutTransforms) const
 
void QueryLocalSpaceTransforms (FInterrogationChannel InChannel, TArray< FIntermediate3DTransform > &OutTransforms) const
 
void QueryLocalSpaceTransforms (TSparseArray< TArray< FIntermediate3DTransform > > &OutTransformsByChannel) const
 
void QueryLocalSpaceTransforms (const TBitArray<> &ChannelsToQuery, TSparseArray< TArray< FIntermediate3DTransform > > &OutTransformsByChannel) const
 
void QueryWorldSpaceTransforms (USceneComponent *SceneComponent, TArray< FTransform > &OutTransforms) const
 
void QueryWorldSpaceTransforms (FInterrogationChannel InChannel, TArray< FTransform > &OutTransforms) const
 
void QueryWorldSpaceTransforms (TSparseArray< TArray< FTransform > > &OutTransformsByChannel) const
 
void QueryWorldSpaceTransforms (const TBitArray<> &ChannelsToQuery, TSparseArray< TArray< FTransform > > &OutTransformsByChannel) const
 
template<typename PropertyTraits >
void QueryPropertyValues (const TPropertyComponents< PropertyTraits > &InPropertyComponents, TArray< typename PropertyTraits::StorageType > &OutValues) const
 
template<typename PropertyTraits >
void QueryPropertyValues (const TPropertyComponents< PropertyTraits > &InPropertyComponents, FInterrogationChannel InChannel, TArray< typename PropertyTraits::StorageType > &OutValues) const
 
void QueryTransformOrigins (TArray< FTransform > &OutTransformOrigins, TArray< FMovieSceneSequenceID > &SubsequenceHierarchy, const UObject *InstanceData) const
 
const FSparseInterrogationChannelInfoGetSparseChannelInfo () const override
 
virtual const FMovieSceneSequenceHierarchyGetHierarchy () const override
 
void SetHierarchy (FMovieSceneSequenceHierarchy *InHierarchy)
 

Static Public Member Functions

static MOVIESCENETRACKS_API EEntitySystemCategory GetInterrogationCategory ()
 
static MOVIESCENETRACKS_API EEntitySystemCategory GetExcludedFromInterrogationCategory ()
 

Protected Attributes

FInterrogationChannels Channels
 
FMovieSceneEvaluationFieldEntitySet EntitiesScratch
 
FMovieSceneEntityComponentField EntityComponentField
 
TUniquePtr< FSystemInterrogatorEntityTrackerEntityTracker
 
TObjectPtr< UMovieSceneEntitySystemLinkerLinker
 
TSharedPtr< FInitialValueCacheInitialValueCache
 
FMovieSceneSequenceHierarchyHierarchy
 
TSparseArray< FExtraMetaDataExtraMetaData
 

Constructor & Destructor Documentation

◆ FSystemInterrogator()

UE::MovieScene::FSystemInterrogator::FSystemInterrogator ( )

◆ ~FSystemInterrogator()

UE::MovieScene::FSystemInterrogator::~FSystemInterrogator ( )

Member Function Documentation

◆ AddInterrogation()

int32 UE::MovieScene::FSystemInterrogator::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()

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

Allocate a new interrogation channel that relates to a specific object

◆ FindEntityFromOwner()

FMovieSceneEntityID UE::MovieScene::FSystemInterrogator::FindEntityFromOwner ( FInterrogationKey  InterrogationKey,
UObject Owner,
uint32  EntityID 
) const

Find an entity given the entity's owner.

Note
: Must call TrackImportedEntities(true) prior to calling ImportTrack for this function to return the correct entity

◆ GetExcludedFromInterrogationCategory()

EEntitySystemCategory UE::MovieScene::FSystemInterrogator::GetExcludedFromInterrogationCategory ( )
static

Gets the custom system category for systems who should be excluded from interrogation linkers

◆ GetHierarchy()

virtual const FMovieSceneSequenceHierarchy * UE::MovieScene::FSystemInterrogator::GetHierarchy ( ) const
inlineoverridevirtual

◆ GetInterrogationCategory()

EEntitySystemCategory UE::MovieScene::FSystemInterrogator::GetInterrogationCategory ( )
static

Gets the custom system category for interrogation-specific systems

◆ GetInterrogations()

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

Retrieve the current interrogations

◆ GetLinker()

UMovieSceneEntitySystemLinker * UE::MovieScene::FSystemInterrogator::GetLinker ( ) const
inline

Access the underlying linker used for interrogation.

◆ GetNumChannels()

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

Retrieve the number of channels allocated

◆ GetSparseChannelInfo()

const FSparseInterrogationChannelInfo & UE::MovieScene::FSystemInterrogator::GetSparseChannelInfo ( ) const
inlineoverridevirtual

◆ ImportLocalTransforms()

FInterrogationChannel UE::MovieScene::FSystemInterrogator::ImportLocalTransforms ( USceneComponent *  SceneComponent,
IMovieScenePlayer InPlayer,
FMovieSceneSequenceID  SequenceID 
)

Import any transform tracks that relate to the specified scene component, or it's AActor if it is the root

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

◆ ImportTrack() [1/2]

void UE::MovieScene::FSystemInterrogator::ImportTrack ( UMovieSceneTrack Track,
const FGuid ObjectBindingID,
FInterrogationChannel  InChannel,
FMovieSceneSequenceID  SequenceID = MovieSceneSequenceID::Invalid 
)

Import a track into this linker. This will add the track to the linker's evaluation field and cause entities to be created for it at each interrogation channel (if it is relevant at such times) Must be called before InterrogateTime() and Update().

Parameters
TrackThe track to import
ObjectBindingIDThe binding ID for the object binding that this track resides within
InChannelThe channel to import this track onto. FInterrogationChannel::Default() can be used if this interrogator is only being used for a single output.
SequenceIDThe SequenceID of the subsequence if importing one.

◆ ImportTrack() [2/2]

void UE::MovieScene::FSystemInterrogator::ImportTrack ( UMovieSceneTrack Track,
FInterrogationChannel  InChannel,
FMovieSceneSequenceID  SequenceID = MovieSceneSequenceID::Invalid 
)

Import a track into this linker. This will add the track to the linker's evaluation field and cause entities to be created for it at each interrogation channel (if it is relevant at such times) Must be called before InterrogateTime() and Update().

Parameters
TrackThe track to import
InChannelThe channel to import this track onto. FInterrogationChannel::Default() can be used if this interrogator is only being used for a single output.
SequenceIDThe SequenceID of the subsequence if importing one.

◆ ImportTracks() [1/2]

void UE::MovieScene::FSystemInterrogator::ImportTracks ( TArrayView< UMovieSceneTrack *const >  Tracks,
const FGuid ObjectBindingID,
FInterrogationChannel  InChannel 
)
inline

Import multiple tracks into this linker. See ImporTrack above.

◆ ImportTracks() [2/2]

void UE::MovieScene::FSystemInterrogator::ImportTracks ( TArrayView< UMovieSceneTrack *const >  Tracks,
FInterrogationChannel  InChannel 
)
inline

Import multiple tracks into this linker. See ImporTrack above.

◆ ImportTransformHierarchy()

FInterrogationChannel UE::MovieScene::FSystemInterrogator::ImportTransformHierarchy ( USceneComponent *  SceneComponent,
IMovieScenePlayer InPlayer,
FMovieSceneSequenceID  SequenceID 
)

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::FSystemInterrogator::QueryLocalSpaceTransforms ( const TBitArray<> &  ChannelsToQuery,
TSparseArray< TArray< FIntermediate3DTransform > > &  OutTransformsByChannel 
) const
inline

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::FSystemInterrogator::QueryLocalSpaceTransforms ( FInterrogationChannel  InChannel,
TArray< FIntermediate3DTransform > &  OutTransforms 
) const
inline

Query local space transforms

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

◆ QueryLocalSpaceTransforms() [3/4]

void UE::MovieScene::FSystemInterrogator::QueryLocalSpaceTransforms ( TSparseArray< TArray< FIntermediate3DTransform > > &  OutTransformsByChannel) const
inline

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::FSystemInterrogator::QueryLocalSpaceTransforms ( USceneComponent *  SceneComponent,
TArray< FIntermediate3DTransform > &  OutTransforms 
) const
inline

Query local space transforms

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

◆ QueryPropertyValues() [1/2]

template<typename PropertyTraits >
void UE::MovieScene::FSystemInterrogator::QueryPropertyValues ( const TPropertyComponents< PropertyTraits > &  InPropertyComponents,
FInterrogationChannel  InChannel,
TArray< typename PropertyTraits::StorageType > &  OutValues 
) const
inline

Query the computed value of an animated property.

All the tracks imported on the given channel are expected to be animating a property of the type described by the InPropertyComponents parameter.

Parameters
InPropertyComponentThe type of property being animated on the given channel.
InChannelThe channel on which the property is being animated.
OutValuesThe animated values, one for each interrogation time.

◆ QueryPropertyValues() [2/2]

template<typename PropertyTraits >
void UE::MovieScene::FSystemInterrogator::QueryPropertyValues ( const TPropertyComponents< PropertyTraits > &  InPropertyComponents,
TArray< typename PropertyTraits::StorageType > &  OutValues 
) const
inline

Query the computed value of an animated property.

See the other QueryPropertyValues method description.

Parameters
InPropertyComponentThe type of property being animated on the default channel.
OutValuesThe animated values, one for each interrogation time.

◆ QueryTransformOrigins()

void UE::MovieScene::FSystemInterrogator::QueryTransformOrigins ( TArray< FTransform > &  OutTransformOrigins,
TArray< FMovieSceneSequenceID > &  SubsequenceHierarchy,
const UObject InstanceData 
) const
inline

Query the transform origin of a subsection based on the imported hiearchy

Parameters
OutTransformOriginsThe interrogated transforms for the currently focused sequence.
SubsequenceHierarchyThe currently focused sequence hierarchy
InstanceDataThe object that contains the origin overrides for the world context object of the root sequence.

◆ QueryWorldSpaceTransforms() [1/4]

void UE::MovieScene::FSystemInterrogator::QueryWorldSpaceTransforms ( const TBitArray<> &  ChannelsToQuery,
TSparseArray< TArray< FTransform > > &  OutTransformsByChannel 
) const
inline

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::FSystemInterrogator::QueryWorldSpaceTransforms ( FInterrogationChannel  InChannel,
TArray< FTransform > &  OutTransforms 
) const
inline

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::FSystemInterrogator::QueryWorldSpaceTransforms ( TSparseArray< TArray< FTransform > > &  OutTransformsByChannel) const
inline

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::FSystemInterrogator::QueryWorldSpaceTransforms ( USceneComponent *  SceneComponent,
TArray< FTransform > &  OutTransforms 
) const
inline

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::FSystemInterrogator::Reset ( )

Reset this linker back to its original state

◆ SetHierarchy()

void UE::MovieScene::FSystemInterrogator::SetHierarchy ( FMovieSceneSequenceHierarchy InHierarchy)
inline

◆ TrackImportedEntities()

void UE::MovieScene::FSystemInterrogator::TrackImportedEntities ( bool  bInTrackImportedEntities)

Indicate that consumers of this class require a reverse-lookup table for imported entities to be maintained such that the various FindEntity functions can be called. (Not enabled by default due to performance cost with high interrogation counts)

◆ Update()

void UE::MovieScene::FSystemInterrogator::Update ( )

Flush this interrogator by running all the systems relevant to the current data and populating the interrogation outputs.

Member Data Documentation

◆ Channels

FInterrogationChannels UE::MovieScene::FSystemInterrogator::Channels
protected

Object <-> Channel tracker

◆ EntitiesScratch

FMovieSceneEvaluationFieldEntitySet UE::MovieScene::FSystemInterrogator::EntitiesScratch
protected

Scratch buffer used for generating entities for interrogation times

◆ EntityComponentField

FMovieSceneEntityComponentField UE::MovieScene::FSystemInterrogator::EntityComponentField
protected

Entity component field containing all the entity owners relevant at specific times

◆ EntityTracker

TUniquePtr<FSystemInterrogatorEntityTracker> UE::MovieScene::FSystemInterrogator::EntityTracker
protected

Tracker class that is used for keeping track of imported entities

◆ ExtraMetaData

TSparseArray<FExtraMetaData> UE::MovieScene::FSystemInterrogator::ExtraMetaData
protected

◆ Hierarchy

FMovieSceneSequenceHierarchy* UE::MovieScene::FSystemInterrogator::Hierarchy
protected

SubSection Hiearchy, for interrogating subsequence data e.g. subsequence transform origins

◆ InitialValueCache

TSharedPtr<FInitialValueCache> UE::MovieScene::FSystemInterrogator::InitialValueCache
protected

Initial value cache

◆ Linker

TObjectPtr<UMovieSceneEntitySystemLinker> UE::MovieScene::FSystemInterrogator::Linker
protected

The linker we own


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