# v0.1.415 — QA-117 dedup 최적화 + 우클릭 메뉴 Y 반전 + drag 외곽선 갱신

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

---

## 핵심 변경 (사용자 보고 3건 통합)
### 1. QA-117 dedup HashSet 최적화 (8000개+ click 렉 fix)
- 사용자 보고: "부품 트리 모두 펼치기 하면 오브젝트 누를 때마다 렉 2초씩 걸린다"
- root cause: UpdateGizmoTargets dedup `IsChildOf` O(N²) — 8000개 부품 root click 시 64M operation
- fix: parent transform HashSet 캐시 → O(N × depth) ≈ 80K operation (1000배+ 성능)
### 2. 우클릭 메뉴 위치 Y 반전 fix
- 사용자 보고: "우클릭 메뉴가 클릭한 위치에 떠야 하는데 엉뚱한 곳에 출력"
- root cause: Unity Input.mousePosition Y = 좌하단 origin, UI Toolkit panel = 좌상단 origin
- fix: ShowContextMenuAtMouse에서 `new Vector2(x, Screen.height - y)` 명시 Y 반전
### 3. drag 중 외곽선 갱신
- 사용자 보고: "드래그 중 외곽선이 같이 안 움직인다. 기즈모와 오브젝트, 외곽선 세가지는 같이 움직이도록"
- root cause: OnDragEnded만 HighlightSelectedParts 호출 → drag 종료 시점만 갱신
- fix: Update 안 `_gizmo.DraggingAxis >= 0` 시 매 frame HighlightSelectedParts 호출
## 별도 사이클 영역
- **Rotate UndoStack**: TransformCommand signature 확장 의무 (position + rotation) — 큰 변경
- **Ctrl+X 후 click**: root cause 추가 진단 필요
- **crosshair 위치**: viewport 영역 동적 좌표 계산
- **QA-014 6차**: 사용자 Player.log 분석 후 정밀 fix
## 영향 파일
- Assets/Scripts/Game/Factory00Bootstrap.cs UpdateGizmoTargets — HashSet dedup
- Assets/Scripts/Game/Factory00Bootstrap.cs ShowContextMenuAtMouse — Y 반전
- Assets/Scripts/Game/Factory00Bootstrap.cs Update — drag 중 outline 갱신
## 다음 자율 큐
QA-014 Player.log 분석 → Rotate UndoStack signature 확장 → Ctrl+X click 차단 진단.
