Пример #1
0
 /// <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);
         }
     }
 }
Пример #2
0
 /// <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);
         }
     }
 }
Пример #3
0
        /// <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));
                }
            }
        }