#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.