Modifiers target camera node classes and change selected node parameters. See Concepts -> Modifiers for lifecycle and gameplay guidance.
UComposableCameraNodeModifierDataAsset¶
Concrete data asset. This is the object gameplay code adds and removes.
| Field | Type | Purpose |
|---|---|---|
ApplyMode |
EComposableCameraModifierApplyMode |
Chooses whether effective-set changes reactivate the camera or mutate the current camera instance in place. |
Modifiers |
TArray<UComposableCameraModifierBase*> |
Instanced wrapper entries. Each entry is either Node Type override mode or Custom Modifier Class mode. |
OverrideEnterTransition |
UComposableCameraTransitionBase* |
Optional camera-pose transition used when adding a ReactivateCamera asset. |
OverrideExitTransition |
UComposableCameraTransitionBase* |
Optional camera-pose transition used when removing a ReactivateCamera asset. |
OverrideEnterValueTransition |
UComposableCameraModifierTransitionBase* |
Optional value transition used when adding a ModifyExistingInstance asset. |
OverrideReplaceValueTransition |
UComposableCameraModifierTransitionBase* |
Optional value transition used when one in-place asset replaces another on the same property. |
OverrideExitValueTransition |
UComposableCameraModifierTransitionBase* |
Optional value transition used when removing a ModifyExistingInstance asset. |
CameraTagQuery |
FGameplayTagQuery |
Boolean tag expression selecting which camera tag containers match this asset. Empty matches all cameras. |
CameraTags |
FGameplayTagContainer |
Deprecated legacy tag list. Migrated to an ANY query during load. |
Priority |
int32 |
Higher value wins when multiple matching assets target the same node property. |
Registered in the Content Browser under Composable Camera System -> Node Modifier Data Asset.
Apply Modes¶
ReactivateCamera is the default and existing behavior. When the effective
modifier set changes, the PCM reconstructs the current camera from its source
type asset, applies the selected modifier values before initialization, and
blends from the old camera pose to the new camera pose.
ModifyExistingInstance keeps the current camera actor and node instances
alive. It takes ownership of checked node properties, writes them into the live
node, and optionally blends supported property values through a modifier value
transition. This mode is for retuning properties on nodes that are already in
the graph; it never inserts nodes into the Evaluation Tree.
Continuous value transitions are available only for property types with built-in
interpolation support. Discrete properties switch when the value transition
weight reaches DiscreteSwitchWeight.
UComposableCameraModifierTransitionBase¶
Stateless timing template for ModifyExistingInstance value transitions. It
does not evaluate camera poses and is not a UComposableCameraTransitionBase.
| Field | Purpose |
|---|---|
Duration |
Seconds to move from source value to target value. Zero applies immediately. |
BlendFunction |
Linear, smoothstep, ease, or custom-curve timing function. |
BlendExponent |
Exponent used by the ease modes. |
CustomCurve |
Optional normalized curve for CustomCurve timing. |
DiscreteSwitchWeight |
Weight threshold at which discrete property values switch. |
UComposableCameraModifierBase¶
Base wrapper and legacy extension class.
| Field or function | Purpose |
|---|---|
bUseCustomModifierClass |
Selects Custom Modifier Class mode. False means generic Node Type override mode. |
NodeTemplate |
Node Type override template. Checked properties copy from this template into matching runtime nodes. |
OverrideProperties |
Serialized property names enabled for Node Type mode. |
CustomModifier |
Instanced user-authored modifier object used in Custom Modifier Class mode. |
NodeClass |
Legacy/custom target class. Generic wrappers derive the target from NodeTemplate. |
ApplyModifier(Node) |
Blueprint event used by custom modifier subclasses. |
IsNodePropertyContinuouslyBlendable(Property) |
Runtime/editor eligibility helper for value-transition interpolation. |
Node Type Overrides¶
In Node Type mode, choose a camera node class and check the properties that
should be overridden. Only editable, non-transient, non-deprecated, top-level
node properties are eligible. Properties marked with NoModifierOverride are
intentionally hidden.
For ReactivateCamera, checked fields are applied before node initialization
and are protected from pin auto-resolution for that activation. For
ModifyExistingInstance, checked fields are applied to the live node and remain
owned by the modifier runtime state until the modifier exits.
Custom Modifier Class¶
Custom mode owns an instanced user-authored subclass of
UComposableCameraModifierBase. The nested modifier supplies NodeClass and
receives the legacy ApplyModifier(Node) Blueprint event after initialization.
Use this mode when the modifier needs logic instead of a static property copy.
ModifyExistingInstance is intended for Node Type overrides, not arbitrary
Blueprint mutation.
Matching and Priority¶
The modifier manager filters active assets through CameraTagQuery, then
resolves Node Type entries per (exact node class, property) by Priority.
Empty queries match every camera. Legacy CameraTags data keeps its previous
"any of these tags" behavior after migration.
Disjoint checked properties on the same node class can come from different modifier assets at the same time. Overlapping properties still elect one winner by priority, then registration order. Custom Modifier Class entries remain whole-node winners because their Blueprint side effects cannot declare per-property ownership.
Transitions¶
For ReactivateCamera, add/remove changes use camera-pose transitions:
OverrideEnterTransition, OverrideExitTransition, then normal camera
transition resolution.
For ModifyExistingInstance, add/remove changes use value transitions:
OverrideEnterValueTransition, OverrideReplaceValueTransition,
OverrideExitValueTransition, or immediate application when no value
transition is set. A null Replace transition preserves the legacy priority
handoff rule; set a zero-duration Replace transition for an explicitly
immediate replacement.
Non-Transient Cameras Only¶
Transient cameras skip modifier resolution. Clear bIsTransient if a cinematic
or temporary camera must respond to modifiers.