private List <Asset> LoadDirectory(string path) { List <Asset> loadedAssets = new List <Asset>(); string[] files = Directory.GetFiles(path); for (int i = 0; i < files.Length; i++) { string extension = Path.GetExtension(files[i]); if (Path.GetFileName(files[i]) == "addon.info" || extension == ".meta") { continue; } Asset asset; switch (extension) { case ".fbx": asset = new ModelAsset() { files = new string[] { files[i] }, source = this }; if (asset.Load()) { loadedAssets.Add(asset); } else { Debug.LogWarning($"Failed to load ModelAsset (does it need to be done in main thread?), Path: {files[i]}"); } break; case ".png": case ".jpg": case ".jpeg": asset = new ImageAsset { files = new string[] { files[i] }, source = this }; if (asset.Load()) { loadedAssets.Add(asset); } else { Debug.LogWarning($"Failed to load ImageAsset (does it need to be done in main thread?), Path: {files[i]}"); } break; case ".mp3": case ".ogg": case ".wav": asset = new SoundAsset { files = new string[] { files[i] }, source = this }; if (asset.Load()) { loadedAssets.Add(asset); } else { Debug.LogWarning($"Failed to load SoundAsset, Path: {files[i]}"); } break; case ".txt": case ".cs": case ".scss": case ".html": asset = new TextAsset { files = new string[] { files[i] }, source = this }; if (asset.Load()) { loadedAssets.Add(asset); } else { Debug.LogWarning($"Failed to load TextAsset, Path: {files[i]}"); } break; default: Debug.LogWarning($"Got unknown extension: {extension}"); break; } } string[] directories = Directory.GetDirectories(path); for (int i = 0; i < directories.Length; i++) { loadedAssets.AddRange(LoadDirectory(directories[i])); } return(loadedAssets); }