From 41270a34f579e5d75aea7d165cb365ee6fbd0b43 Mon Sep 17 00:00:00 2001 From: user Date: Mon, 16 Feb 2026 02:51:43 +0900 Subject: [PATCH] =?UTF-8?q?Refactor:=20=EC=A0=84=EC=B2=B4=20=EC=97=90?= =?UTF-8?q?=EB=94=94=ED=84=B0=20UXML=20=EC=A0=84=ED=99=98=20+=20=EB=8C=80?= =?UTF-8?q?=EC=8B=9C=EB=B3=B4=EB=93=9C/=EB=9F=B0=ED=83=80=EC=9E=84=20UI=20?= =?UTF-8?q?+=20=ED=95=9C=EA=B8=80=ED=99=94=20+=20NanumGothic=20=ED=8F=B0?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 모든 컨트롤러 에디터를 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 --- .../Editor/OptitrackStreamingClientEditor.cs | 193 ++- .../OptiTrack/Scripts/Editor/UXML.meta} | 2 +- .../UXML/OptitrackStreamingClientEditor.uss | 117 ++ .../OptitrackStreamingClientEditor.uss.meta | 12 + .../UXML/OptitrackStreamingClientEditor.uxml | 57 + .../OptitrackStreamingClientEditor.uxml.meta | 10 + .../Scripts/OptitrackSkeletonAnimator.cs | 533 -------- .../Scripts/OptitrackSkeletonAnimator.cs.meta | 12 - .../BlendShapeIntensityOverrideDrawer.cs | 248 ++-- .../Editor/StreamingleFacialReceiverEditor.cs | 371 +++--- .../StreamingleFacial/Editor/UXML.meta} | 5 +- .../UXML/StreamingleFacialReceiverEditor.uss | 187 +++ .../StreamingleFacialReceiverEditor.uss.meta | 12 + .../UXML/StreamingleFacialReceiverEditor.uxml | 59 + .../StreamingleFacialReceiverEditor.uxml.meta | 10 + .../KindRetargeting/retargeting_script.txt | 3 - .../KindRetargeting/retargeting_style.txt | 3 - .../KindRetargeting/retargeting_template.txt | 3 - .../Resources/KindRetargeting/웹 리타겟팅.txt | 3 - Assets/Resources/StreamingleDashboard.meta | 8 + .../StreamingleDashboard/dashboard_script.txt | 3 + .../dashboard_script.txt.meta} | 2 +- .../StreamingleDashboard/dashboard_style.txt | 3 + .../dashboard_style.txt.meta} | 2 +- .../dashboard_template.txt | 3 + .../dashboard_template.txt.meta} | 2 +- Assets/Resources/StreamingleUI.meta | 8 + .../StreamingleUI/StreamingleControlPanel.uss | 362 ++++++ .../StreamingleControlPanel.uss.meta | 12 + .../StreamingleControlPanel.uxml | 53 + .../StreamingleControlPanel.uxml.meta | 10 + .../StreamingleControllerSetupTool.uss | 249 ++++ .../StreamingleControllerSetupTool.uss.meta | 12 + .../StreamingleControllerSetupTool.uxml | 59 + .../StreamingleControllerSetupTool.uxml.meta | 10 + .../StreamingleControllerSetupToolAdvanced.cs | 963 ++++++-------- .../RetargetingRemoteControllerEditor.cs | 56 +- .../Editor/SimplePoseTransferEditor.cs | 22 + .../Editor/SimplePoseTransferEditor.cs.meta | 2 + .../Scripts/KindRetargeting/Editor/UXML.meta | 8 + .../Editor/UXML/SimplePoseTransferEditor.uxml | 18 + .../UXML/SimplePoseTransferEditor.uxml.meta | 10 + .../Remote/RetargetingHTTPServer.cs | 246 ---- .../Remote/RetargetingHTTPServer.cs.meta | 2 - .../Remote/RetargetingRemoteController.cs | 17 +- .../Controllers => Streamdeck}/Editor.meta | 2 +- .../Editor/StreamDeckServerManagerEditor.cs | 130 ++ .../StreamDeckServerManagerEditor.cs.meta | 2 + Assets/Scripts/Streamdeck/Editor/UXML.meta | 8 + .../UXML/StreamDeckServerManagerEditor.uss | 92 ++ .../StreamDeckServerManagerEditor.uss.meta | 12 + .../UXML/StreamDeckServerManagerEditor.uxml | 38 + .../StreamDeckServerManagerEditor.uxml.meta | 10 + .../Streamdeck/StreamDeckServerManager.cs | 932 ++++---------- .../Streamdeck/StreamingleDashboardServer.cs | 282 ++++ .../StreamingleDashboardServer.cs.meta | 2 + .../Runtime/StreamingleAvatarImport.cs | 2 +- .../Camera/CameraControlSystem.cs | 66 - .../Controllers/CameraController.cs | 225 +--- .../Controllers/EventController.cs | 217 +--- .../Controllers/ItemController.cs | 224 +--- .../Controllers/System.meta | 8 + .../Controllers/System/AvatarHeadManager.cs | 67 + .../System/AvatarHeadManager.cs.meta | 2 + .../System/ClothSimulationManager.cs | 78 ++ .../System/ClothSimulationManager.cs.meta | 2 + .../Controllers/System/FacialMotionManager.cs | 81 ++ .../System/FacialMotionManager.cs.meta | 2 + .../System/MotionRecordingManager.cs | 236 ++++ .../System/MotionRecordingManager.cs.meta | 2 + .../Controllers/System/OptiTrackManager.cs | 183 +++ .../System/OptiTrackManager.cs.meta | 2 + .../System/RetargetingRemoteManager.cs | 135 ++ .../System/RetargetingRemoteManager.cs.meta | 2 + .../System/RuntimeControlPanelManager.cs | 583 +++++++++ .../System/RuntimeControlPanelManager.cs.meta | 2 + .../Controllers/System/ScreenshotManager.cs | 211 +++ .../System/ScreenshotManager.cs.meta | 2 + .../Controllers/SystemController.cs | 1143 ++--------------- .../Editor/AvatarOutfitControllerEditor.cs | 340 +++++ .../AvatarOutfitControllerEditor.cs.meta | 2 + .../Editor/CameraManagerEditor.cs | 801 +++++------- .../Editor/EventControllerEditor.cs | 181 +++ .../Editor/EventControllerEditor.cs.meta | 2 + .../Editor/ItemControllerEditor.cs | 213 +++ .../Editor/ItemControllerEditor.cs.meta | 2 + .../Editor/SystemControllerEditor.cs | 24 + .../Editor/SystemControllerEditor.cs.meta | 2 + .../StreamingleControl/Editor/UXML.meta | 8 + .../UXML/AvatarOutfitControllerEditor.uss | 50 + .../AvatarOutfitControllerEditor.uss.meta | 12 + .../UXML/AvatarOutfitControllerEditor.uxml | 14 + .../AvatarOutfitControllerEditor.uxml.meta | 10 + .../Editor/UXML/CameraManagerEditor.uss | 128 ++ .../Editor/UXML/CameraManagerEditor.uss.meta | 12 + .../Editor/UXML/CameraManagerEditor.uxml | 66 + .../Editor/UXML/CameraManagerEditor.uxml.meta | 10 + .../Editor/UXML/EventControllerEditor.uxml | 14 + .../UXML/EventControllerEditor.uxml.meta | 10 + .../Editor/UXML/ItemControllerEditor.uxml | 14 + .../UXML/ItemControllerEditor.uxml.meta | 10 + .../Editor/UXML/StreamingleCommon.uss | 196 +++ .../Editor/UXML/StreamingleCommon.uss.meta | 12 + .../Editor/UXML/SystemControllerEditor.uxml | 82 ++ .../UXML/SystemControllerEditor.uxml.meta | 10 + .../StreamingleControl/Input/rawkey.cs | 123 -- .../StreamingleControl/Input/rawkey.cs.meta | 2 - .../StreamingleDebugWindow.cs | 2 +- CLAUDE.md | 2 +- 109 files changed, 6378 insertions(+), 4943 deletions(-) rename Assets/{Resources/KindRetargeting.meta => External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/UXML.meta} (77%) create mode 100644 Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/UXML/OptitrackStreamingClientEditor.uss create mode 100644 Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/UXML/OptitrackStreamingClientEditor.uss.meta create mode 100644 Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/UXML/OptitrackStreamingClientEditor.uxml create mode 100644 Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/UXML/OptitrackStreamingClientEditor.uxml.meta delete mode 100644 Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/OptitrackSkeletonAnimator.cs delete mode 100644 Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/OptitrackSkeletonAnimator.cs.meta rename Assets/{Resources/KindRetargeting/retargeting_style.txt.meta => External/StreamingleFacial/Editor/UXML.meta} (57%) create mode 100644 Assets/External/StreamingleFacial/Editor/UXML/StreamingleFacialReceiverEditor.uss create mode 100644 Assets/External/StreamingleFacial/Editor/UXML/StreamingleFacialReceiverEditor.uss.meta create mode 100644 Assets/External/StreamingleFacial/Editor/UXML/StreamingleFacialReceiverEditor.uxml create mode 100644 Assets/External/StreamingleFacial/Editor/UXML/StreamingleFacialReceiverEditor.uxml.meta delete mode 100644 Assets/Resources/KindRetargeting/retargeting_script.txt delete mode 100644 Assets/Resources/KindRetargeting/retargeting_style.txt delete mode 100644 Assets/Resources/KindRetargeting/retargeting_template.txt delete mode 100644 Assets/Resources/KindRetargeting/웹 리타겟팅.txt create mode 100644 Assets/Resources/StreamingleDashboard.meta create mode 100644 Assets/Resources/StreamingleDashboard/dashboard_script.txt rename Assets/Resources/{KindRetargeting/retargeting_script.txt.meta => StreamingleDashboard/dashboard_script.txt.meta} (75%) create mode 100644 Assets/Resources/StreamingleDashboard/dashboard_style.txt rename Assets/Resources/{KindRetargeting/retargeting_template.txt.meta => StreamingleDashboard/dashboard_style.txt.meta} (75%) create mode 100644 Assets/Resources/StreamingleDashboard/dashboard_template.txt rename Assets/Resources/{KindRetargeting/웹 리타겟팅.txt.meta => StreamingleDashboard/dashboard_template.txt.meta} (75%) create mode 100644 Assets/Resources/StreamingleUI.meta create mode 100644 Assets/Resources/StreamingleUI/StreamingleControlPanel.uss create mode 100644 Assets/Resources/StreamingleUI/StreamingleControlPanel.uss.meta create mode 100644 Assets/Resources/StreamingleUI/StreamingleControlPanel.uxml create mode 100644 Assets/Resources/StreamingleUI/StreamingleControlPanel.uxml.meta create mode 100644 Assets/Scripts/Editor/StreamingleTools/StreamingleControllerSetupTool.uss create mode 100644 Assets/Scripts/Editor/StreamingleTools/StreamingleControllerSetupTool.uss.meta create mode 100644 Assets/Scripts/Editor/StreamingleTools/StreamingleControllerSetupTool.uxml create mode 100644 Assets/Scripts/Editor/StreamingleTools/StreamingleControllerSetupTool.uxml.meta create mode 100644 Assets/Scripts/KindRetargeting/Editor/SimplePoseTransferEditor.cs create mode 100644 Assets/Scripts/KindRetargeting/Editor/SimplePoseTransferEditor.cs.meta create mode 100644 Assets/Scripts/KindRetargeting/Editor/UXML.meta create mode 100644 Assets/Scripts/KindRetargeting/Editor/UXML/SimplePoseTransferEditor.uxml create mode 100644 Assets/Scripts/KindRetargeting/Editor/UXML/SimplePoseTransferEditor.uxml.meta delete mode 100644 Assets/Scripts/KindRetargeting/Remote/RetargetingHTTPServer.cs delete mode 100644 Assets/Scripts/KindRetargeting/Remote/RetargetingHTTPServer.cs.meta rename Assets/Scripts/{Streamingle/StreamingleControl/Controllers => Streamdeck}/Editor.meta (77%) create mode 100644 Assets/Scripts/Streamdeck/Editor/StreamDeckServerManagerEditor.cs create mode 100644 Assets/Scripts/Streamdeck/Editor/StreamDeckServerManagerEditor.cs.meta create mode 100644 Assets/Scripts/Streamdeck/Editor/UXML.meta create mode 100644 Assets/Scripts/Streamdeck/Editor/UXML/StreamDeckServerManagerEditor.uss create mode 100644 Assets/Scripts/Streamdeck/Editor/UXML/StreamDeckServerManagerEditor.uss.meta create mode 100644 Assets/Scripts/Streamdeck/Editor/UXML/StreamDeckServerManagerEditor.uxml create mode 100644 Assets/Scripts/Streamdeck/Editor/UXML/StreamDeckServerManagerEditor.uxml.meta create mode 100644 Assets/Scripts/Streamdeck/StreamingleDashboardServer.cs create mode 100644 Assets/Scripts/Streamdeck/StreamingleDashboardServer.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/AvatarHeadManager.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/AvatarHeadManager.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/ClothSimulationManager.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/ClothSimulationManager.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/FacialMotionManager.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/FacialMotionManager.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/MotionRecordingManager.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/MotionRecordingManager.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/OptiTrackManager.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/OptiTrackManager.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/RetargetingRemoteManager.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/RetargetingRemoteManager.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/RuntimeControlPanelManager.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/RuntimeControlPanelManager.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/ScreenshotManager.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Controllers/System/ScreenshotManager.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/AvatarOutfitControllerEditor.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/AvatarOutfitControllerEditor.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/EventControllerEditor.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/EventControllerEditor.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/ItemControllerEditor.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/ItemControllerEditor.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/SystemControllerEditor.cs create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/SystemControllerEditor.cs.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/AvatarOutfitControllerEditor.uss create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/AvatarOutfitControllerEditor.uss.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/AvatarOutfitControllerEditor.uxml create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/AvatarOutfitControllerEditor.uxml.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/CameraManagerEditor.uss create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/CameraManagerEditor.uss.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/CameraManagerEditor.uxml create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/CameraManagerEditor.uxml.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/EventControllerEditor.uxml create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/EventControllerEditor.uxml.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/ItemControllerEditor.uxml create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/ItemControllerEditor.uxml.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/StreamingleCommon.uss create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/StreamingleCommon.uss.meta create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/SystemControllerEditor.uxml create mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/SystemControllerEditor.uxml.meta delete mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Input/rawkey.cs delete mode 100644 Assets/Scripts/Streamingle/StreamingleControl/Input/rawkey.cs.meta diff --git a/Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/OptitrackStreamingClientEditor.cs b/Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/OptitrackStreamingClientEditor.cs index 6a8b4e8c6..9ea667607 100644 --- a/Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/OptitrackStreamingClientEditor.cs +++ b/Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/OptitrackStreamingClientEditor.cs @@ -1,81 +1,148 @@ using UnityEngine; using UnityEditor; +using UnityEngine.UIElements; +using UnityEditor.UIElements; [CustomEditor(typeof(OptitrackStreamingClient))] public class OptitrackStreamingClientEditor : Editor { - public override void OnInspectorGUI() + private const string UxmlPath = "Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/UXML/OptitrackStreamingClientEditor.uxml"; + private const string UssPath = "Assets/External/OptiTrack Unity Plugin/OptiTrack/Scripts/Editor/UXML/OptitrackStreamingClientEditor.uss"; + private const string CommonUssPath = "Assets/Scripts/Streamingle/StreamingleControl/Editor/UXML/StreamingleCommon.uss"; + + private OptitrackStreamingClient client; + private VisualElement statusDot; + private Label statusText; + private VisualElement runtimeOffline; + private VisualElement runtimeOnline; + private VisualElement runtimeInfo; + + public override VisualElement CreateInspectorGUI() { - // 기본 Inspector 그리기 - DrawDefaultInspector(); - - EditorGUILayout.Space(); - EditorGUILayout.LabelField("OptiTrack 연결 제어", EditorStyles.boldLabel); - - OptitrackStreamingClient client = (OptitrackStreamingClient)target; - - // 연결 상태 표시 - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("연결 상태:", GUILayout.Width(80)); - - string connectionStatus = Application.isPlaying ? client.GetConnectionStatus() : "게임 실행 중이 아님"; - Color originalColor = GUI.color; - - if (Application.isPlaying) + client = (OptitrackStreamingClient)target; + var root = new VisualElement(); + + // Load stylesheets + var commonUss = AssetDatabase.LoadAssetAtPath(CommonUssPath); + if (commonUss != null) root.styleSheets.Add(commonUss); + + var uss = AssetDatabase.LoadAssetAtPath(UssPath); + if (uss != null) root.styleSheets.Add(uss); + + // Load UXML + var uxml = AssetDatabase.LoadAssetAtPath(UxmlPath); + if (uxml != null) uxml.CloneTree(root); + + // Cache references + statusDot = root.Q("statusDot"); + statusText = root.Q