# V2 Third-Person Orbit Camera

The third-person orbit camera resolves a gameplay camera pose around a target
location. It is authored as a deterministic `V2Gameplay` data evaluator so
Blueprints, tests, and release gates can use the same orbit math.

## Runtime Surface

- `FV2ThirdPersonOrbitCameraLimits` configures distance, pitch, yaw,
  sensitivity, inversion, FOV, target height offset, side offset, and blend
  time.
- `FV2ThirdPersonOrbitCameraState` stores the target location plus current yaw,
  pitch, and distance.
- `FV2ThirdPersonOrbitCameraInput` carries yaw, pitch, zoom axes, and frame
  delta seconds.
- `FV2ThirdPersonOrbitCameraEvaluation` returns the pivot, camera location,
  camera rotation, arm vector, resolved yaw, pitch, distance, FOV, camera
  manager mode spec, and validation issues.

## Orbit Rules

1. The pivot is `TargetLocation + TargetHeightOffset`.
2. Yaw and pitch input are multiplied by their sensitivity and `DeltaSeconds`.
3. Positive zoom input reduces distance, which moves the camera closer.
4. Pitch and distance are always clamped to authored limits.
5. Yaw is normalized by default and clamped only when `bClampYawToLimits` is
   enabled.
6. Non-blocking clamp issues are reported when distance, pitch, or yaw are
   adjusted by limits.
7. Invalid ranges, non-finite state, or negative delta time produce blocking
   issues and no valid camera pose.

## Camera Manager Export

`EvaluateThirdPersonOrbitCamera` fills `ModeSpec` with a
`EV2CameraModeType::ThirdPersonOrbit` mode using id `camera.third_person.orbit`.
`BuildThirdPersonOrbitCameraMode` can also export a custom id, priority, and
active flag for a camera manager stack.

## Validation Commands

Run these targeted checks when touching the orbit camera:

```bash
python3 V2/ue/Tools/check-v2-third-person-orbit-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/ThirdPersonOrbitCamera_V2_Contract.json
python3 -m py_compile V2/ue/Tools/check-v2-third-person-orbit-camera.py
```
