# V2 Camera Shake Intensity Slider

This runbook covers `TODOS.phase-72.72.13.1.11`: a camera shake intensity slider
for motion sensitivity, with a 0-100 percent range and a default of 100 percent.

## Runtime Surface

The camera shake intensity profile lives in V2UI:

- C++ header: `V2/ue/Source/V2UI/Public/V2CameraShakeIntensitySlider.h`
- C++ source: `V2/ue/Source/V2UI/Private/V2CameraShakeIntensitySlider.cpp`
- automation spec:
  `V2/ue/Source/V2Tests/Private/UI/CameraShakeIntensitySlider.spec.cpp`
- contract:
  `V2/ue/Content/V2/UI/Accessibility/CameraShakeIntensitySlider_V2_Contract.json`
- focused checker: `V2/ue/Tools/check-v2-camera-shake-intensity-slider.py`

`FV2CameraShakeIntensitySlider::BuildDefaultProfile` returns
`Accessibility.CameraShakeIntensity.V2` for the
`Settings.Accessibility.CameraShakeIntensity` settings row.

## Slider Policy

The default Accessibility settings screen exposes `Camera shake` as a slider:

- minimum: 0 percent;
- maximum: 100 percent;
- step: 5 percent;
- default: 100 percent.

The setting is stored on `FV2UIAccessibilitySettings` as
`CameraShakeIntensityPercent`. `Normalize` clamps and rounds the value to the
nearest supported step, and `GetCameraShakeIntensityMultiplier` resolves it to a
0.0-1.0 multiplier.

## Runtime Resolution

`FV2CameraShakeIntensityProfile::ResolveShakeIntensity` scales authored camera
shake intensity without amplification. A slider value of 0 percent resolves to
zero shake and disables camera shake playback. The resolution is marked
gameplay-deterministic and frame-data inert through
`doesNotAffectHitStopFrameData` so hit stop, frame data, and ranked simulation
are unaffected.

Required source coverage includes CombatHit, EnvironmentalImpact, VehicleImpact,
Cinematic, and UIImpact shake sources.

## Verification

Run these checks after changing camera shake intensity slider behavior:

```bash
python3 V2/ue/Tools/check-v2-camera-shake-intensity-slider.py
python3 V2/ue/Tools/check-v2-settings-ui.py
python3 V2/ue/Tools/check-v2-ui-module.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 V2/tools/validate-v2-docs.py
python3 -m py_compile V2/ue/Tools/check-v2-camera-shake-intensity-slider.py V2/ue/Tools/check-v2-settings-ui.py V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/UI/Accessibility/CameraShakeIntensitySlider_V2_Contract.json
python3 -m json.tool V2/ue/Content/V2/UI/Settings/SettingsScreen_V2_Contract.json
```

Automation test name:
`V2.UI.Accessibility.CameraShakeIntensitySlider.AssetContract`.

## Horde Gates

- `camera-shake-intensity-slider-source`
- `camera-shake-intensity-slider-range`
- `camera-shake-intensity-slider-default`
- `camera-shake-intensity-slider-settings-row`
- `camera-shake-intensity-slider-resolution`
- `camera-shake-intensity-slider-automation`
- `camera-shake-intensity-slider-ci-wired`
