/// <summary>
        /// Called when the RealSense assembly is not found by AutoRun.cs
        /// </summary>
        public static void OpenPluginNotFoundOptions()
        {
            var lookForPlugin = EditorPrefs.GetInt(EditorPrefKey, 0);

            if (lookForPlugin < 1)
            {
                int pluginNotFoundOption = EditorUtility.DisplayDialogComplex(PACKAGE_NOT_FOUND_TITLE, PACKAGE_NOT_FOUND_MESSAGE,
                                                                              PACKAGE_NOT_FOUND_OK, PACKAGE_NOT_FOUND_CANCEL, PACKAGE_NOT_FOUND_ALT);
                switch (pluginNotFoundOption)
                {
                case 0: //Download
                    if (_packageDownloaderState == PackageDownloaderState.None)
                    {
                        _packageDownloaderState   = PackageDownloaderState.StartDownload;
                        EditorApplication.update += OnEditorApplicationUpdate;
                    }
                    break;

                case 1: //Close
                    break;

                case 2: //Close, Dont't Ask Again
                    EditorPrefs.SetInt(EditorPrefKey, 1);
                    break;
                }
            }
        }
 public static void DownloadRealSensePackageMenuItem()
 {
     if (_packageDownloaderState == PackageDownloaderState.None)
     {
         _packageDownloaderState   = PackageDownloaderState.StartDownload;
         EditorApplication.update += OnEditorApplicationUpdate;
     }
 }
        static void StartDownloadState()
        {
            if (_packageDownloaderState == PackageDownloaderState.StartDownload || _packageDownloaderState == PackageDownloaderState.None)
            {
                EditorUtility.ClearProgressBar();
                _unityWebRequest?.Dispose();
                _unityWebRequest = new UnityWebRequest(GITHUB_DOWNLOAD_URL)
                {
                    downloadHandler = new DownloadHandlerBuffer(), timeout = 10
                };
                Debug.Log($"Downloaded File to [{_downloadLocation}]");
                var webRequest = _unityWebRequest.SendWebRequest();

                webRequest.completed += (e) =>
                {
                    if (_unityWebRequest.result != UnityWebRequest.Result.Success)
                    {
                        Debug.LogError($"[Unity Web Request Error]: {_unityWebRequest.error} |{_unityWebRequest.result}");
                        _packageDownloaderState = PackageDownloaderState.Error;
                    }
                    else
                    {
                        EditorUtility.ClearProgressBar();
                        // Or retrieve results as binary data
                        byte[] results = _unityWebRequest.downloadHandler.data;
                        File.WriteAllBytes(_downloadLocation, results);
                    }

                    EditorUtility.ClearProgressBar();
                    _packageDownloaderState = PackageDownloaderState.None;
                    AssetDatabase.ImportPackage(_downloadLocation, true);
                    AssetDatabase.Refresh();
                    _unityWebRequest.Dispose();
                };
                _packageDownloaderState = PackageDownloaderState.IsDownloading;
            }
        }
        static void ErrorState()
        {
            EditorUtility.ClearProgressBar();
            int failedToDownloadOption = EditorUtility.DisplayDialogComplex(FAILED_TO_DOWNLOAD_TITLE, string.Format(FAILED_TO_DOWNLOAD_MESSAGE, _unityWebRequest.error),
                                                                            FAILED_TO_DOWNLOAD_OK, FAILED_TO_DOWNLOAD_CANCEL, FAILED_TO_DOWNLOAD_ALT);

            switch (failedToDownloadOption)
            {
            case 0: //Try Again
                _packageDownloaderState = PackageDownloaderState.StartDownload;
                break;

            case 1: //Stop
                _packageDownloaderState = PackageDownloaderState.None;
                break;

            case 2: //Download Manually
                _packageDownloaderState = PackageDownloaderState.None;
                Help.BrowseURL(GITHUB_DOWNLOAD_URL);
                break;
            }

            _unityWebRequest.Dispose();
        }