FSystemInterrogator

A class specialized for interrogating Sequencer entity data without applying any state to objects.

Windows
MacOS
Linux

Inheritance Hierarchy

IInterrogationExtension

FSystemInterrogator

References

Module

MovieSceneTracks

Header

/Engine/Source/Runtime/MovieSceneTracks/Public/EntitySystem/Interrogation/MovieSceneInterrogationLinker.h

Include

#include "EntitySystem/Interrogation/MovieSceneInterrogationLinker.h"

Syntax

class FSystemInterrogator :
    private FGCObject,
    private UE::MovieScene::IInterrogationExtension

Remarks

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 only link systems that are not excluded from EEntitySystemContext::Interrogation. 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); }

Variables

Name Description

Protected variable

FMovieSceneEval...

 

EntitiesScratch

Scratch buffer used for generating entities for interrogation times

Protected variable

FMovieSceneEnti...

 

EntityComponentField

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

Protected variable

TUniquePtr< FSy...

 

EntityTracker

Tracker class that is used for keeping track of imported entities

Protected variable

TBitArray

 

ImportedChannelBits

BitArray containing set bits for any channel that has data associated with it.

Protected variable

TSharedPtr< FIn...

 

InitialValueCache

Protected variable

TArray< FInterr...

 

Interrogations

An array of interrogation times

Protected variable

UMovieSceneEnti...

 

Linker

The linker we own

Protected variable

TMap< UObject &...

 

ObjectToChannel

Map from an object to its interrogation channel

Protected variable

FSparseInterrog...

 

SparseChannelInfo

Array of information pertaining to a given channel

Constructors

Name Description

Public function

FSystemInterrogator()

Destructors

Name Description

Public function

~FSystemInterrogator()

Functions

Name Description

Public function

int32

 

AddInterrogation

(
    const FInterrogationParams& Params
)

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

Public function

FInterrogati...

 

AllocateChannel

(
    UObject* Object,
    FInterrogationChannel ParentChannel,
    const FMovieScenePropertyBinding& ...
)

Allocate a new interrogation channel that relates to a specific object

Public function

FInterrogati...

 

AllocateChannel

(
    FInterrogationChannel ParentChannel,
    const FMovieScenePropertyBinding& ...
)

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

Public function

FInterrogati...

 

AllocateUnboundChannel

(
    FInterrogationChannel ParentChannel,
    const FTransform& CurrentValueLoca...
)

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)

Public function Const

FMovieSceneE...

 

FindEntityFromOwner

(
    FInterrogationKey InterrogationKey,
    UObject* Owner,
    uint32 EntityID
)

Find an entity given the entity's owner.

Public function Const

TArrayView< ...

 

GetInterrogations()

Retrieve the current interrogations

Public function Const

UMovieSceneE...

 

GetLinker()

Access the underlying linker used for interrogation.

Public function Const

int32

 

GetNumChannels()

Retrieve the number of channels allocated

Public function

FInterrogati...

 

ImportLocalTransforms

(
    USceneComponent* SceneComponen...,
    IMovieScenePlayer* InPlayer,
    FMovieSceneSequenceID SequenceID
)

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

Public function

void

 

ImportTrack

(
    UMovieSceneTrack* Track,
    const FGuid& ObjectBindingID,
    FInterrogationChannel InChannel
)

Import a track into this linker.

Public function

void

 

ImportTrack

(
    UMovieSceneTrack* Track,
    FInterrogationChannel InChannel
)

Import a track into this linker.

Public function

void

 

ImportTracks

(
    TArrayView< UMovieSceneTrack*c...,
    const FGuid& ObjectBindingID,
    FInterrogationChannel InChannel
)

Import multiple tracks into this linker. See ImporTrack above.

Public function

FInterrogati...

 

ImportTransformHierarchy

(
    USceneComponent* SceneComponen...,
    IMovieScenePlayer* InPlayer,
    FMovieSceneSequenceID SequenceID
)

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

Public function

void

 

QueryLocalSpaceTransforms

(
    const TBitArray<>& ChannelsToQuery,
    TSparseArray< TArray< FIntermediate...
)

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

Public function

void

 

QueryLocalSpaceTransforms

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

Public function

void

 

QueryLocalSpaceTransforms

(
    USceneComponent* SceneComponen...,
    TArray< FIntermediate3DTransform > ...
)

Query local space transforms

Public function

void

 

QueryLocalSpaceTransforms

(
    FInterrogationChannel InChannel,
    TArray< FIntermediate3DTransform > ...
)

Query local space transforms

Public function

void

 

QueryPropertyValues

(
    const TPropertyComponents< Property...,
    FInterrogationChannel InChannel,
    TArray< typename PropertyTraits::St...
)

Query the computed value of an animated property.

Public function

void

 

QueryPropertyValues

(
    const TPropertyComponents< Property...,
    TArray< typename PropertyTraits::St...
)

Query the computed value of an animated property.

Public function

void

 

QueryWorldSpaceTransforms

(
    TSparseArray< TArray< FTransform >>...
)

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

Public function

void

 

QueryWorldSpaceTransforms

(
    USceneComponent* SceneComponen...,
    TArray< FTransform >& OutTransform...
)

Query world space transforms for a component

Public function

void

 

QueryWorldSpaceTransforms

(
    const TBitArray<>& ChannelsToQuery,
    TSparseArray< TArray< FTransform >>...
)

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

Public function

void

 

QueryWorldSpaceTransforms

(
    FInterrogationChannel InChannel,
    TArray< FTransform >& OutTransform...
)

Query world space transforms for a channel

Public function

void

 

Reset()

Reset this linker back to its original state

Public function

void

 

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.

Public function

void

 

Update()

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

Overridden from IInterrogationExtension

Name Description

Public function Virtual Const

const FSpars...

 

GetSparseChannelInfo()

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Dismiss