The camera zoom layer resolves aim-down-sights, scope, and binocular zoom from a
base FV2CameraModeSpec. It blends FOV toward the requested zoom target while
preserving the base camera pose and mode metadata.
Runtime Surface#
FV2CameraZoomConfigconfigures FOV bounds, ADS, scope, and binocular target FOVs, zoom-in and zoom-out speeds, per-mode enable flags, and blend duration.FV2CameraZoomStatecarries the base camera mode, current FOV, and current zoom alpha.FV2CameraZoomInputcarries requested zoom mode, held state, and delta seconds.FV2CameraZoomEvaluationreturns requested and resolved modes, base, target, and final FOV, zoom alpha, active and completion flags, base and resolved mode specs, and validation issues.
Zoom Rules#
- Invalid config, state, or input timing is blocking.
- Disabled zoom modes report
ZoomModeDisabledand fall back to no zoom. - ADS, scope, and binocular modes each resolve to their configured target FOV.
- Holding zoom increases alpha by
ZoomInSpeed * DeltaSeconds. - Releasing zoom decreases alpha by
ZoomOutSpeed * DeltaSeconds. - FOV values are clamped to configured bounds and reported as
ZoomFovClamped. ZoomBlendCompleteis reported when alpha reaches the requested end state.
Camera Manager Export#
EvaluateCameraZoom fills ModeSpec from the base camera mode with the
resolved FOV and configured blend duration. BuildCameraZoomMode can export a
custom id, priority, and active flag while preserving base camera pose, blend
function, input, and cinematic metadata.
Validation Commands#
Run these targeted checks when touching camera zoom:
bash
python3 V2/ue/Tools/check-v2-camera-zoom.py
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/CameraZoom_V2_Contract.json
python3 -m py_compile V2/ue/Tools/check-v2-camera-zoom.py