# v0.1.391 — QA-014 뷰 메뉴 카메라 프리셋 7종 wiring fix (target null fallback)

- 버전: v0.1.391
- 날짜: 2026-05-25
- 다운로드: [factory00-windows-x64-v0.1.391.zip](../../downloads/factory00-windows-x64-v0.1.391.zip) (169 MB)
- 캡처: [qa-screenshots/v0.1.391/](../../qa-screenshots/v0.1.391/)

---

## 핵심 변경 (QA-014 fix · ApplyMode Default fallback)
- **CameraViewController.ApplyMode `CameraViewMode.Default` 분기 fallback 추가** — target null 시 `_boundsCenter` fallback, 빈 씬 시 월드 원점
- v0.1.391 fix scope: ~7라인 변경 (단일 `case` 분기)
## QA-014 root cause (코드 검증 후 확정)
| 영역 | 위치 | 발견 |
|---|---|---|
| SetPresetView | CameraViewController L595 | `if (_mode == FirstPerson) return; _orbitYawPitch 갱신; ApplyMode(Default);` |
| ApplyMode Default | L272~283 | `if (target != null) {...}` 가드 = target null 시 cam.transform 갱신 안 됨 |
뷰(V) 메뉴 Ribbon view-front/back/left/right/top/bottom/iso 7종 모두 SetPresetView 호출 → ApplyMode(Default) → target null 시 무동작.
## fix 패턴
```csharp
case CameraViewMode.Default:
    cam.orthographic = false;
    cam.fieldOfView = 60f;
    {
        Vector3 centerDef = target != null ? target.position
            : (_boundsCenter != Vector3.zero ? _boundsCenter : Vector3.zero);
        var rot = Quaternion.Euler(_orbitYawPitch.x, _orbitYawPitch.y, 0f);
        cam.transform.position = centerDef + _orbitPanOffset + rot * (Vector3.back * orbitDistance);
        cam.transform.rotation = rot;
    }
    break;
```
L259~263 주석 패턴 ("F1 Default 패턴 미러 — _boundsCenter 우선, target.position fallback. 빈 씬은 월드 원점") 명시 의도와 정합.
## 영향 파일
- `Assets/Scripts/Game/CameraViewController.cs` L272-285 — ApplyMode Default 분기 fallback 추가
## 영향 영역 (PASS 예상)
| Button | yaw | pitch | 동작 |
|---|---|---|---|
| view-front (정면) | 0 | 0 | SetPresetView(0,0) → 카메라 +Z 방향 |
| view-back (후면) | 180 | 0 | SetPresetView(180,0) → 카메라 -Z 방향 |
| view-left (왼쪽) | -90 | 0 | -X 방향 |
| view-right (오른쪽) | 90 | 0 | +X 방향 |
| view-top (위) | 0 | 89 | 위에서 본 평면 |
| view-bottom (아래) | 0 | -89 | 아래에서 본 평면 |
| view-iso (등각) | 45 | 35.264 | 등각 투영 |
## 다음 자율 큐
QA-108 SNB 자식 노드 (Task #138) → QA-119 LoadProject (Task #143).
