#include <MovieSceneComposableCameraShotSection.h>

Inherits: UMovieSceneSection, IMovieSceneEntityProvider

One section on a UMovieSceneComposableCameraShotTrack. It defines when a Shot is active, which bound AComposableCameraLevelSequenceActor receives it, and which Shot data is pushed into the Level Sequence component.

Per frame, the Shot track instance resolves the parent binding to the Level Sequence actor, calls BuildEffectiveShot(), and pushes (Section, Shot, RowIndex) to UComposableCameraLevelSequenceComponent::SetSequencerShotOverride.

Inline sections store their editable Shot in InlineShot. Asset-backed sections store a soft reference in ShotAssetRef, but the editable runtime data is the section-local ShotOverrides snapshot seeded from that asset. Later Sequencer edits mutate only the section copy; the shared Shot Asset remains the template for new sections.

Public Attributes

Return Name Description
EComposableCameraShotSource Source Source mode picker: Inline or AssetReference.
FComposableCameraShot InlineShot Used iff Source == Inline; edited by the Shot Editor or Details panel.
TSoftObjectPtr< UComposableCameraShotAsset > ShotAssetRef Used iff Source == AssetReference; picking/changing the asset seeds ShotOverrides.
TArray< FComposableCameraShotTargetActorOverride > TargetActorOverrides Per-target Sequencer actor binding overrides.
FComposableCameraShot ShotOverrides AssetReference-only editable section copy seeded from ShotAssetRef.
bool bShotOverridesInitialized Migration guard so saved section-local edits are not re-copied from the asset every load.
TSoftObjectPtr< UComposableCameraTransitionDataAsset > EnterTransition Transition asset used when the playhead enters this section from an overlapping previous Shot section.

Source

EComposableCameraShotSource Source = EComposableCameraShotSource::Inline

Source mode picker. Inline stores Shot data directly in the section. AssetReference stores a Shot Asset reference plus a section-local editable snapshot.


InlineShot

FComposableCameraShot InlineShot

Used iff Source == Inline. The Shot Editor edits this value when an inline section is selected.


ShotAssetRef

TSoftObjectPtr< UComposableCameraShotAsset > ShotAssetRef

Used iff Source == AssetReference. Changing this reference calls RefreshShotOverridesFromSource(), copying the asset's Shot into ShotOverrides.


TargetActorOverrides

TArray< FComposableCameraShotTargetActorOverride > TargetActorOverrides

Each entry maps a target index in the effective Shot to a Sequencer binding. At evaluation time the binding resolves to an Actor and replaces Targets[TargetIndex].Target.Actor in the working Shot copy. This supports Spawnables, reusable Shot Assets, and sequences that reuse one framing preset with different actors.


ShotOverrides

FComposableCameraShot ShotOverrides

AssetReference-only editable copy shown by the Shot Editor. Runtime consumes this section-local value directly and never writes back to the shared Shot Asset.


bShotOverridesInitialized

bool bShotOverridesInitialized = false

Migration/init guard for AssetReference snapshots. Existing sections created before ShotOverrides existed initialize once from the Shot Asset on PostLoad; saved section-local edits are not re-copied every load.


EnterTransition

TSoftObjectPtr< UComposableCameraTransitionDataAsset > EnterTransition

Transition asset used when the playhead enters this section from a previous overlapping section on the same Shot Track. The overlap window controls duration; the transition asset contributes blend behavior. Null means a hard cut.

Public Methods

Return Name Description
UMovieSceneComposableCameraShotSection Constructor.
void ImportEntityImpl virtual Emits a per-section track instance dispatch.
const FComposableCameraShot * ResolveActiveShot const Resolves the active section Shot pointer.
FComposableCameraShot * ResolveActiveShot Mutable overload.
FComposableCameraShot * ResolveShotEditorShot Shot data the Shot Editor should edit for this section.
UObject * ResolveShotEditorHost const Host UObject for Shot Editor transactions.
bool BuildEffectiveShotWithoutBindings const Builds the base effective Shot before target binding overrides.
void RefreshShotOverridesFromSource Copies Shot Asset defaults into ShotOverrides.
bool BuildEffectiveShot const Builds the final effective Shot for evaluation.
UComposableCameraShotAsset * ResolveCachedShotAsset const Resolves the cached Shot Asset pointer without blocking the eval path.
UComposableCameraTransitionDataAsset * ResolveCachedEnterTransition const Resolves the cached transition pointer without blocking the eval path.
void PostLoad virtual Refreshes caches and initializes legacy AssetReference snapshots.

UMovieSceneComposableCameraShotSection

UMovieSceneComposableCameraShotSection(const FObjectInitializer& ObjectInitializer)

ImportEntityImpl

virtual

virtual void ImportEntityImpl(UMovieSceneEntitySystemLinker* EntityLinker, const UE::MovieScene::FEntityImportParams& ImportParams, UE::MovieScene::FImportedEntity* OutImportedEntity)

ResolveActiveShot

const

const FComposableCameraShot* ResolveActiveShot() const

Returns &InlineShot for inline sections. Returns &ShotOverrides for AssetReference sections when ShotAssetRef is assigned; returns null when no asset is assigned. Callers should not cache the pointer beyond the section lifetime.


ResolveActiveShot

FComposableCameraShot* ResolveActiveShot()

Mutable overload of ResolveActiveShot(). AssetReference authoring should prefer ResolveShotEditorShot() so edits explicitly land on the section-local override copy.


ResolveShotEditorShot

FComposableCameraShot* ResolveShotEditorShot()

Returns the Shot data the Shot Editor should mutate: InlineShot for inline sections, ShotOverrides for AssetReference sections, or null when an AssetReference section has no asset assigned.


ResolveShotEditorHost

const

UObject* ResolveShotEditorHost() const

Returns the section itself in both source modes so Shot Editor transactions and dirtying apply to the Level Sequence section, not the shared Shot Asset.


BuildEffectiveShotWithoutBindings

const

bool BuildEffectiveShotWithoutBindings(FComposableCameraShot& OutShot) const

Copies InlineShot or ShotOverrides into OutShot before Sequencer actor-binding overrides are applied. Returns false when an AssetReference section has no assigned ShotAssetRef.


RefreshShotOverridesFromSource

void RefreshShotOverridesFromSource()

Copies the current Shot Asset defaults into ShotOverrides. Called when the user changes Source or ShotAssetRef, and once during legacy section migration; normal evaluation and editor refresh do not re-copy the asset.


BuildEffectiveShot

const

bool BuildEffectiveShot(const UE::MovieScene::FSequenceInstance& Instance, FComposableCameraShot& OutShot) const

Starts from BuildEffectiveShotWithoutBindings(), then walks TargetActorOverrides and substitutes each indexed Targets[i].Target.Actor with the actor resolved from the running Sequencer binding. Stale target indices or unresolved bindings are skipped without mutating source data.


ResolveCachedShotAsset

const

UComposableCameraShotAsset* ResolveCachedShotAsset() const

Resolves the cached ShotAssetRef pointer. The cache is refreshed off the evaluation path; AssetReference evaluation reads ShotOverrides, not the asset's Shot field.


ResolveCachedEnterTransition

const

UComposableCameraTransitionDataAsset* ResolveCachedEnterTransition() const

Resolves the cached EnterTransition pointer. An unloaded transition degrades to a hard cut instead of blocking evaluation.


PostLoad

virtual

virtual void PostLoad()

Refreshes cached assets and initializes ShotOverrides once for legacy AssetReference sections that do not yet have a saved snapshot.

Private Attributes

Return Name Description
TObjectPtr< UComposableCameraShotAsset > CachedShotAsset Cached resolved shot asset used for off-path snapshot refresh.
TObjectPtr< UComposableCameraTransitionDataAsset > CachedEnterTransition Cached resolved transition asset.

CachedShotAsset

TObjectPtr< UComposableCameraShotAsset > CachedShotAsset

Cached resolved shot asset used when seeding ShotOverrides.


CachedEnterTransition

TObjectPtr< UComposableCameraTransitionDataAsset > CachedEnterTransition

Private Methods

Return Name Description
void RefreshCachedAssets Off-hot-path refresh for cached Shot Asset and transition pointers.

RefreshCachedAssets

void RefreshCachedAssets()

Refreshes cached soft-reference targets outside the evaluation path.