using System; using System.IO; using Unity.Pipeline.Commands; using Unity.Pipeline.Models; using UnityEditor; using UnityEngine; namespace Unity.Pipeline.Editor.Commands { /// /// Command to get detailed Editor status information. /// Returns rich Editor state including compilation, play mode, and project details. /// Accessible via "unity request editor_status" and "/api/editor_status" endpoint. /// public static class EditorStatusCommand { [CliCommand("editor_status", "Get detailed Unity Editor status and state information")] public static StatusResponse GetEditorStatus() { return new StatusResponse { Status = GetOverallStatus(), Compiling = EditorApplication.isCompiling, DomainReloadInProgress = EditorApplication.isUpdating, PlayMode = GetPlayModeStatus(), LastHeartbeat = DateTime.UtcNow, ProjectPath = Path.GetDirectoryName(Application.dataPath), UnityVersion = Application.unityVersion }; } /// /// Get overall Editor status based on current state. /// private static string GetOverallStatus() { if (EditorApplication.isCompiling) return "compiling"; if (EditorApplication.isUpdating) return "reloading"; if (EditorApplication.isPlaying || EditorApplication.isPaused) return "playing"; return "ready"; } /// /// Get current play mode status. /// private static string GetPlayModeStatus() { if (EditorApplication.isPaused) return "paused"; if (EditorApplication.isPlaying) return "playing"; return "stopped"; } } }