# V2 Split-Screen Camera

The split-screen camera layer resolves two-, three-, and four-player camera
views into normalized viewport rectangles. It applies optional per-player camera
offset and FOV settings before exporting camera manager mode specs for each
player view.

## Runtime Surface

- `FV2SplitScreenCameraConfig` configures requested player count, split
  direction, per-player settings, safe-zone padding, and blend duration.
- `FV2SplitScreenCameraPlayerSettings` carries player id, base camera mode,
  per-player camera offset, optional custom FOV, FOV multiplier, and active
  state.
- `FV2SplitScreenCameraViewportRect` stores normalized min and max viewport
  coordinates.
- `FV2SplitScreenCameraPlayerView` returns the resolved viewport and camera mode
  for a player.
- `FV2SplitScreenCameraEvaluation` returns resolved player count, requested and
  resolved split direction, layout flags, player views, and validation issues.

## Split Rules

1. Split-screen requires at least two active players and supports up to four.
2. Requested player count is clamped to the supported two-to-four range.
3. `Auto` resolves to vertical for two players and grid for three or four.
4. `Horizontal` stacks player viewports from top to bottom.
5. `Vertical` splits player viewports from left to right.
6. `Grid` uses two columns and one or two rows depending on player count.
7. Safe-zone padding shrinks each viewport and reports `ViewportPadded`.
8. Duplicate player ids, invalid camera modes, invalid FOV settings, or too few
   active players are blocking.

## Per-Player Camera Settings

When `bUsePerPlayerCameraSettings` is enabled, each player can add a camera
offset, use a custom FOV, or multiply the base camera FOV. FOV values are
clamped to camera manager bounds and report `CameraSettingsClamped`.

## Camera Manager Export

`EvaluateSplitScreenCamera` fills each player view with a camera manager mode
spec that preserves the player camera mode type, rotation, blend function, input
flags, and cinematic flags. `BuildSplitScreenPlayerMode` can export a custom id,
priority, and active flag for any resolved player view.

## Validation Commands

Run these targeted checks when touching split-screen camera:

```bash
python3 V2/ue/Tools/check-v2-split-screen-camera.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/SplitScreenCamera_V2_Contract.json
python3 -m py_compile V2/ue/Tools/check-v2-split-screen-camera.py
```
