- 모든 컨트롤러 에디터를 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>
93 lines
4.0 KiB (Stored with Git LFS)
Plaintext
93 lines
4.0 KiB (Stored with Git LFS)
Plaintext
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
|
|
<title>Streamingle Dashboard</title>
|
|
<link href="https://cdn.jsdelivr.net/npm/gridstack@10/dist/gridstack.min.css" rel="stylesheet"/>
|
|
<style>
|
|
{{CSS}}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="header">
|
|
<h1>STREAMINGLE</h1>
|
|
<div class="tab-bar">
|
|
<button class="tab-btn active" id="tabBtnDashboard" onclick="switchTab('dashboard')">Dashboard</button>
|
|
<button class="tab-btn" id="tabBtnRetargeting" onclick="switchTab('retargeting')">Retargeting</button>
|
|
</div>
|
|
<div class="header-controls">
|
|
<div class="connection-status" id="connectionStatus">연결 대기중...</div>
|
|
<div id="dashboardControls">
|
|
<button class="btn-icon" id="btnLock" onclick="toggleLock()" title="레이아웃 잠금/해제">🔓</button>
|
|
<button class="btn-icon" onclick="showSettings()" title="패널 설정">⚙</button>
|
|
<button class="btn-icon" onclick="requestFullState()" title="새로고침">🔄</button>
|
|
</div>
|
|
<div id="retargetingControls" style="display:none;">
|
|
<button class="btn-icon" onclick="rtRefresh()" title="새로고침">🔄</button>
|
|
<button class="btn-icon" onclick="rtExpandAll()" title="모두 펼치기">📂</button>
|
|
<button class="btn-icon" onclick="rtCollapseAll()" title="모두 접기">📁</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Dashboard Tab -->
|
|
<div id="tabDashboard" class="tab-content active">
|
|
<div class="health-bar" id="healthBar">
|
|
<div class="health-item" id="health-optitrack">
|
|
<span class="health-dot offline"></span>
|
|
<span>OptiTrack</span>
|
|
</div>
|
|
<div class="health-item" id="health-facial">
|
|
<span class="health-dot offline"></span>
|
|
<span>Facial(0)</span>
|
|
</div>
|
|
<div class="health-item" id="health-recording">
|
|
<span class="health-dot offline"></span>
|
|
<span>REC</span>
|
|
</div>
|
|
<div class="health-item" id="health-remote">
|
|
<span class="health-dot offline"></span>
|
|
<span>Remote</span>
|
|
</div>
|
|
<div class="health-item" id="health-clients">
|
|
<span class="health-dot online"></span>
|
|
<span>WS(1)</span>
|
|
</div>
|
|
</div>
|
|
<div class="grid-stack" id="dashboardGrid"></div>
|
|
</div>
|
|
|
|
<!-- Retargeting Tab -->
|
|
<div id="tabRetargeting" class="tab-content">
|
|
<div class="rt-status-bar" id="rtStatusBar">
|
|
<div class="rt-connection-status" id="rtConnectionStatus">리타게팅 대기중...</div>
|
|
</div>
|
|
<div class="characters-container" id="charactersContainer">
|
|
<div class="loading-message">리타게팅 탭을 선택하면 연결됩니다.</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Settings Overlay -->
|
|
<div class="settings-overlay" id="settingsOverlay" onclick="onSettingsOverlayClick(event)">
|
|
<div class="settings-panel">
|
|
<div class="settings-header">
|
|
<span>패널 설정</span>
|
|
<button class="settings-close" onclick="hideSettings()">✕</button>
|
|
</div>
|
|
<div class="settings-body" id="settingsBody"></div>
|
|
<div class="settings-footer">
|
|
<button class="btn btn-secondary btn-sm" onclick="resetLayout()">레이아웃 초기화</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toast" id="toast"></div>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/gridstack@10/dist/gridstack-all.js"></script>
|
|
<script>
|
|
{{JS}}
|
|
</script>
|
|
</body>
|
|
</html>
|