Streamingle_URP/Assets/External/StreamingleFacial/Editor/UXML/StreamingleFacialReceiverEditor.uxml
user 41270a34f5 Refactor: 전체 에디터 UXML 전환 + 대시보드/런타임 UI + 한글화 + NanumGothic 폰트
- 모든 컨트롤러 에디터를 IMGUI → UI Toolkit(UXML/USS)으로 전환
  (Camera, Item, Event, Avatar, System, StreamDeck, OptiTrack, Facial)
- StreamingleCommon.uss 공통 테마 + 개별 에디터 USS 스타일시트
- SystemController 서브매니저 분리 (OptiTrack, Facial, Recording, Screenshot 등)
- 런타임 컨트롤 패널 (ESC 토글, 좌측 오버레이, 150% 스케일)
- 웹 대시보드 서버 (StreamingleDashboardServer) + 리타게팅 통합
- 설정 도구(StreamingleControllerSetupTool) UXML 재작성 + 원클릭 설정
- SimplePoseTransfer UXML 에디터 추가
- 전체 UXML 한글화 + NanumGothic 폰트 적용
- Streamingle.Debug → Streamingle.Debugging 네임스페이스 변경 (Debug.Log 충돌 해결)
- 불필요 코드 제거 (rawkey.cs, RetargetingHTTPServer, OptitrackSkeletonAnimator 등)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 02:51:43 +09:00

60 lines
3.1 KiB
Plaintext

<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements">
<!-- Title Bar -->
<ui:VisualElement name="titleBar" class="facial-title-bar">
<ui:Label text="Streamingle Facial Receiver" class="facial-title-text"/>
<ui:VisualElement name="statusContainer" class="facial-status-container">
<ui:VisualElement name="statusDot" class="facial-status-dot"/>
<ui:Label name="statusLabel" text="LIVE" class="facial-status-label"/>
</ui:VisualElement>
</ui:VisualElement>
<!-- Basic Settings -->
<ui:VisualElement class="section">
<ui:Foldout text="Basic Settings" value="true" class="section-foldout">
<uie:PropertyField binding-path="faceMeshRenderers" label="Face Mesh Renderers"/>
<ui:VisualElement name="autoFindRow" class="facial-auto-find-row">
<ui:Button name="autoFindBtn" text="Auto Find ARKit Meshes" class="facial-auto-find-btn"/>
<ui:Label name="autoFindResult" class="facial-auto-find-result"/>
</ui:VisualElement>
<uie:PropertyField binding-path="mirrorMode" label="Mirror Mode (L/R Flip)"/>
</ui:Foldout>
</ui:VisualElement>
<!-- Port Hot-Swap (port buttons built dynamically in C#) -->
<ui:VisualElement class="section">
<ui:Foldout text="Port Hot-Swap" value="true" class="section-foldout">
<ui:VisualElement name="activePortRow" class="facial-active-port-row">
<ui:Label text="Active Port" class="facial-port-label"/>
<ui:Label name="activePortValue" text="---" class="facial-port-value"/>
</ui:VisualElement>
<ui:VisualElement name="portButtonsContainer" class="facial-port-buttons"/>
<uie:PropertyField binding-path="availablePorts" label="Port List"/>
</ui:Foldout>
</ui:VisualElement>
<!-- Data Filtering -->
<ui:VisualElement class="section">
<ui:Foldout text="Data Filtering" value="true" class="section-foldout">
<uie:PropertyField binding-path="enableFiltering" label="Enable"/>
<ui:VisualElement name="filteringFields">
<uie:PropertyField binding-path="smoothingFactor" label="Smoothing"/>
<uie:PropertyField binding-path="maxBlendShapeDelta" label="Max BlendShape Delta"/>
<uie:PropertyField binding-path="maxRotationDelta" label="Max Rotation Delta"/>
<uie:PropertyField binding-path="fastBlendShapeMultiplier" label="Fast BS Multiplier"/>
<uie:PropertyField binding-path="spikeToleranceFrames" label="Spike Tolerance"/>
</ui:VisualElement>
</ui:Foldout>
</ui:VisualElement>
<!-- Facial Intensity -->
<ui:VisualElement class="section">
<ui:Foldout text="Facial Intensity" value="true" class="section-foldout">
<uie:PropertyField binding-path="globalIntensity" label="Global Intensity"/>
<ui:VisualElement class="facial-separator"/>
<uie:PropertyField binding-path="blendShapeIntensityOverrides" label="Per-BlendShape Overrides"/>
</ui:Foldout>
</ui:VisualElement>
</ui:UXML>