/// <summary> /// Find paths to all the plugins under a given parent directory (recursively) /// </summary> /// <param name="ParentDirectory">Parent directory to look in. Plugins will be found in any *subfolders* of this directory.</param> /// <param name="FileNames">List of filenames. Will have all the discovered .uplugin files appended to it.</param> static void EnumeratePluginsInternal(DirectoryReference ParentDirectory, List <FileReference> FileNames) { foreach (DirectoryReference ChildDirectory in ParentDirectory.EnumerateDirectoryReferences()) { int InitialFileNamesCount = FileNames.Count; foreach (FileReference PluginFile in ChildDirectory.EnumerateFileReferences("*.uplugin")) { FileNames.Add(PluginFile); } if (FileNames.Count == InitialFileNamesCount) { EnumeratePluginsInternal(ChildDirectory, FileNames); } } }
/// <summary> /// Find paths to all the plugins under a given parent directory (recursively) /// </summary> /// <param name="ParentDirectory">Parent directory to look in. Plugins will be found in any *subfolders* of this directory.</param> /// <param name="FileNames">List of filenames. Will have all the discovered .uplugin files appended to it.</param> static void EnumeratePluginsInternal(DirectoryInfo ParentDirectory, List <string> FileNames) { foreach (DirectoryInfo ChildDirectory in ParentDirectory.EnumerateDirectories()) { int InitialFileNamesCount = FileNames.Count; foreach (FileInfo PluginFileInfo in ChildDirectory.EnumerateFiles("*.uplugin", SearchOption.TopDirectoryOnly)) { FileNames.Add(PluginFileInfo.FullName); } if (FileNames.Count == InitialFileNamesCount) { EnumeratePluginsInternal(ChildDirectory, FileNames); } } }
/// <summary> /// Find paths to all the plugins under a given parent directory (recursively) /// </summary> /// <param name="ParentDirectory">Parent directory to look in. Plugins will be found in any *subfolders* of this directory.</param> /// <param name="FileNames">List of filenames. Will have all the discovered .uplugin files appended to it.</param> /// <param name="Queue">Queue for tasks to be executed</param> static void EnumeratePluginsInternal(DirectoryItem ParentDirectory, List <FileReference> FileNames, ThreadPoolWorkQueue Queue) { foreach (DirectoryItem ChildDirectory in ParentDirectory.EnumerateDirectories()) { bool bSearchSubDirectories = true; foreach (FileItem PluginFile in ChildDirectory.EnumerateFiles()) { if (PluginFile.HasExtension(".uplugin")) { lock (FileNames) { FileNames.Add(PluginFile.Location); } bSearchSubDirectories = false; } } if (bSearchSubDirectories) { Queue.Enqueue(() => EnumeratePluginsInternal(ChildDirectory, FileNames, Queue)); } } }