virtual protected List <IBuild> DiscoverBuilds() { var BuildList = new List <IBuild>(); if (BuildPaths.Count() > 0) { foreach (string Path in BuildPaths) { IEnumerable <IFolderBuildSource> BuildSources = Gauntlet.Utils.InterfaceHelpers.FindImplementations <IFolderBuildSource>(); foreach (var BS in BuildSources) { IEnumerable <IBuild> Builds = BS.GetBuildsAtPath(ProjectName, Path); BuildList.AddRange(Builds); } } } // Editor? IBuild EditorBuild = CreateEditorBuild(UnrealPath); if (EditorBuild != null) { BuildList.Add(EditorBuild); } else { Log.Verbose("No editor found for {0}, editor-builds will be unavailable", ProjectName); } // give higher level code a chance to reject stuff return(BuildList.Where(B => ShouldMakeBuildAvailable(B)).ToList()); }