The V2 camera manager is a data-driven gameplay camera stack in V2Gameplay. It
evaluates camera modes by priority, blends from the previous mode to the
selected active mode, and reports blocking and non-blocking authoring issues for
automation and Blueprint tools.
Runtime Surface#
FV2CameraModeSpecdefines one camera mode with a stableModeId, mode type, priority, target transform, field of view, blend timing, input flags, and cinematic flags.FV2CameraManagerStackSpecowns the stack and default mode. Active modes are selected by priority. If multiple active modes share the highest priority,RequestedModeIdis used as a deterministic tie-break when it names one of those modes.FV2CameraManagerBlendRequestcarries the previous mode, requested mode, elapsed blend time, frame delta, and forced-cut flag.FV2CameraManagerEvaluationis the resolved camera pose. It includes the active mode id, mode type, location, rotation, FOV, blend alpha, remaining blend time, gameplay-input state, cinematic state, and validation issues.
Activation Rules#
- The stack must have a non-empty
StackId, a validDefaultModeId, and unique valid mode ids. - Only modes with
bActiveset participate in activation. - The highest-priority active mode wins.
RequestedModeIdcan disambiguate an equal-priority tie. It cannot override a higher-priority active mode.- If the selected mode has
bBlocksLowerPriority, lower-priority requested modes are reported withPriorityConflict. - If no mode is active, the evaluator falls back to the default mode and emits
MissingActiveModeas a non-blocking issue when the default is valid.
Blending#
The target mode controls blend duration and curve:
CutorbForceCutresolves immediately to the active mode.Linearuses elapsed blend time divided by the target blend duration.CubicEaseInOutuses a smoothstep curve for designer-friendly transitions.
Missing previous modes cut to the active mode and emit a non-blocking
MissingMode issue so gameplay can recover without producing an invalid pose.
Default Stack#
BuildDefaultCameraManagerStack includes:
camera.third_person.orbit, active by default for regular gameplay.camera.first_person, inactive until a first-person flow activates it.camera.dialogue, high-priority cinematic dialogue framing.camera.cinematic, highest-priority cinematic framing that blocks lower priority gameplay modes.camera.spectator, low-priority free camera fallback.
Validation Commands#
Run these targeted checks when touching the camera manager:
bash
python3 V2/ue/Tools/check-v2-camera-manager.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/Gameplay/Camera/CameraManager_V2_Contract.json
python3 -m py_compile V2/ue/Tools/check-v2-camera-manager.py