private IEnumerable <ProgressBarReport> ExportAssetsAtPath(string assetPath, PrefabContext prefabContext) { if (string.IsNullOrWhiteSpace(assetPath)) { yield break; } if (_cancellationToken.IsCancellationRequested) { yield break; } if (!_visitedAssetPaths.Add(assetPath)) { yield break; } if (!File.Exists(assetPath) && !Directory.Exists(assetPath)) { yield break; } var attrs = File.GetAttributes(assetPath); if (attrs.HasFlag(FileAttributes.Directory)) { foreach (var guid in AssetDatabase.FindAssets("", new[] { assetPath })) { EditorTaskScheduler.Default.ScheduleForegroundTask(() => ExportAssetsAtPath(AssetDatabase.GUIDToAssetPath(guid), prefabContext)); } yield break; } yield return("Loading " + assetPath); var assets = ExportUtils.LoadAllAssetsAtPath(assetPath); yield return("Exporting " + assetPath); ExportAssetBlock(assetPath, AssetDatabase.GetMainAssetTypeAtPath(assetPath), assets, prefabContext); }