#include <MovieSceneComposableCameraShotTrack.h>
Inherits:
UMovieSceneNameableTrack
Sequencer track that drives Composable Camera Shots — Phase E of Shot-Based Keyframing.
Each section on the track represents one Shot activation window in the timeline. The active Shot's data ([FComposableCameraShot](../structs/FComposableCameraShot.md#fcomposablecamerashot)) is pushed every frame into the bound [AComposableCameraLevelSequenceActor](../actors/AComposableCameraLevelSequenceActor.md#acomposablecameralevelsequenceactor)'s internal [UComposableCameraCompositionFramingNode::Shot](../nodes/UComposableCameraCompositionFramingNode.md#shot-2) UPROPERTY by the UMovieSceneComposableCameraShotTrackInstance — so the runtime CCS pipeline runs unchanged (TickCamera evaluates the framing node, the solver builds a pose, the LS Component projects it to the CineCamera).
Track binding model
Bound under an [AComposableCameraLevelSequenceActor](../actors/AComposableCameraLevelSequenceActor.md#acomposablecameralevelsequenceactor) (or subclass — notably the Phase E [AComposableCameraLevelSequenceShotActor](../actors/AComposableCameraLevelSequenceShotActor.md#acomposablecameralevelsequenceshotactor)) binding row, NOT root-level. The track has no TargetActorBinding field — its parent in the outliner is the binding it drives. The track editor (Phase E.4) surfaces the menu entry only when the binding's class matches.
Multi-row + overlap semantics (V1)
Rows enabled. When multiple sections overlap on different rows the top row wins (lowest row index → highest priority — Sequencer's standard ordering, mirrors Camera Cut). Phase F will reinterpret overlap as a transition zone with multi-Shot blending at the CompositionFramingNode level; the LSComponent's shot-override map is already designed to hold multiple active entries to support this.
Phase F outlook
Easing is currently disabled — Phase F adds inter-Shot CCS Transitions on the section level, at which point easing handles drive the transition's blend window. V1 sections are hard-cut.
Section exit semantics
CompositionFramingNode::Shot retains the last-written value when no section is active (gap between sections / past the final section). This is intentional — the camera holds its last framing rather than snapping back to a default. Designers explicitly add a new section to change the framing.
Modeled on [UMovieSceneComposableCameraPatchTrack](UMovieSceneComposableCameraPatchTrack.md#umoviescenecomposablecamerapatchtrack) for layout consistency. Shot-track-specific divergences:
-
Bound (under a binding row), not root.
-
No easing in V1.
-
No
TargetActorBinding(the bound actor IS the parent binding).
Public Methods¶
| Return | Name | Description |
|---|---|---|
UMovieSceneComposableCameraShotTrack |
||
void |
AddSection virtual |
|
bool |
SupportsType virtual const |
|
UMovieSceneSection * |
CreateNewSection virtual |
|
bool |
SupportsMultipleRows virtual const inline |
|
EMovieSceneTrackEasingSupportFlags |
SupportsEasing virtual const |
|
const TArray< UMovieSceneSection * > & |
GetAllSections virtual const |
|
bool |
HasSection virtual const |
|
bool |
IsEmpty virtual const |
|
void |
RemoveSection virtual |
|
void |
RemoveSectionAt virtual |
|
void |
RemoveAllAnimationData virtual |
UMovieSceneComposableCameraShotTrack¶
UMovieSceneComposableCameraShotTrack(const FObjectInitializer & ObjectInitializer)
AddSection¶
virtual
virtual void AddSection(UMovieSceneSection & Section)
SupportsType¶
virtual const
virtual bool SupportsType(TSubclassOf< UMovieSceneSection > SectionClass) const
CreateNewSection¶
virtual
virtual UMovieSceneSection * CreateNewSection()
SupportsMultipleRows¶
virtual const inline
virtual inline bool SupportsMultipleRows() const
SupportsEasing¶
virtual const
virtual EMovieSceneTrackEasingSupportFlags SupportsEasing(FMovieSceneSupportsEasingParams & Params) const
GetAllSections¶
virtual const
virtual const TArray< UMovieSceneSection * > & GetAllSections() const
HasSection¶
virtual const
virtual bool HasSection(const UMovieSceneSection & Section) const
IsEmpty¶
virtual const
virtual bool IsEmpty() const
RemoveSection¶
virtual
virtual void RemoveSection(UMovieSceneSection & Section)
RemoveSectionAt¶
virtual
virtual void RemoveSectionAt(int32 SectionIndex)
RemoveAllAnimationData¶
virtual
virtual void RemoveAllAnimationData()
Private Attributes¶
| Return | Name | Description |
|---|---|---|
TArray< TObjectPtr< UMovieSceneSection > > |
Sections |
Sections¶
TArray< TObjectPtr< UMovieSceneSection > > Sections