using System; using System.Collections.Generic; using System.Text; using Unity.Services.Core.Editor.OrganizationHandler; using UnityEditor; using UnityEngine; using UnityEngine.UIElements; namespace Unity.Services.Analytics.Editor { internal interface IDebugPanelWindow { void SetStatusIndicator(DebugState state); void SetNextUpload(float remainingSeconds); void ClearNextUpload(); void ClearUploadFields(); void RefreshEventStreamDisplay(); } class DebugPanelWindow : EditorWindow, IDebugPanelWindow { DebugPanelController m_Model; TextField m_UserIdLabel; TextField m_InstallationIdLabel; TextField m_ExternalUserIdLabel; TextField m_PlayerIdLabel; VisualElement m_StatusIndicatorIcon; TextElement m_StatusIndicatorText; TextElement m_NextUploadIndicator; Button m_ForceUploadButton; ListView m_EventStreamContainer; VisualElement m_EventStreamEmptyContainer; Label m_EventStreamEmptyLabel; TextField m_PayloadDisplay; Label m_NoPayloadSelectedLabel; string m_PayloadString; ScrollView m_PayloadScrollView; Button m_ClearStreamButton; VisualElement m_PrivacyLinkContainer; [MenuItem("Services/Analytics/Debug Panel")] static void OpenDebugPanel() { DebugPanelWindow wnd = GetWindow(); wnd.titleContent = new GUIContent("Analytics Debug Panel"); wnd.minSize = new Vector2(310.0f, 680.0f); } void CreateGUI() { VisualTreeAsset uiAsset = AssetDatabase.LoadAssetAtPath("Packages/com.unity.services.analytics/Editor/Tools/DebugPanel.uxml"); VisualElement ui = uiAsset.Instantiate(); ui.AddToClassList("main-window"); rootVisualElement.Add(ui); if (EditorGUIUtility.isProSkin) { rootVisualElement.styleSheets.Add(AssetDatabase.LoadAssetAtPath("Packages/com.unity.services.analytics/Editor/Tools/DebugPanelStylesDark.uss")); } else { rootVisualElement.styleSheets.Add(AssetDatabase.LoadAssetAtPath("Packages/com.unity.services.analytics/Editor/Tools/DebugPanelStylesLight.uss")); } m_Model = new DebugPanelController(this); TextElement managerLink = rootVisualElement.Q("main-help-link-manager-text"); managerLink.AddManipulator(new Clickable(OpenDashboardLink)); VisualElement managerLinkIcon = rootVisualElement.Q("main-help-link-manager-icon"); managerLinkIcon.AddManipulator(new Clickable(OpenDashboardLink)); TextElement browserLink = rootVisualElement.Q("main-help-link-browser-text"); browserLink.AddManipulator(new Clickable(OpenBrowserLink)); VisualElement browserLinkIcon = rootVisualElement.Q("main-help-link-browser-icon"); browserLinkIcon.AddManipulator(new Clickable(OpenBrowserLink)); m_StatusIndicatorIcon = rootVisualElement.Q("state-indicator-icon"); m_StatusIndicatorText = rootVisualElement.Q("state-indicator-text"); m_UserIdLabel = rootVisualElement.Q("ids-user-id"); m_InstallationIdLabel = rootVisualElement.Q("ids-installation-id"); m_ExternalUserIdLabel = rootVisualElement.Q("ids-external-id"); m_PlayerIdLabel = rootVisualElement.Q("ids-player-id"); m_NextUploadIndicator = rootVisualElement.Q("next-upload-indicator"); m_ForceUploadButton = rootVisualElement.Q