using System; using System.Collections.Generic; using System.Linq; using UnityEditor; using UnityEditor.Compilation; namespace VSCodeEditor { public interface IAssemblyNameProvider { string GetAssemblyNameFromScriptPath(string path); IEnumerable GetAssemblies(Func shouldFileBePartOfSolution); IEnumerable GetAllAssetPaths(); UnityEditor.PackageManager.PackageInfo FindForAssetPath(string assetPath); ResponseFileData ParseResponseFile(string responseFilePath, string projectDirectory, string[] systemReferenceDirectories); } internal class AssemblyNameProvider : IAssemblyNameProvider { public string GetAssemblyNameFromScriptPath(string path) { return CompilationPipeline.GetAssemblyNameFromScriptPath(path); } public IEnumerable GetAssemblies(Func shouldFileBePartOfSolution) { return CompilationPipeline.GetAssemblies() .Where(i => 0 < i.sourceFiles.Length && i.sourceFiles.Any(shouldFileBePartOfSolution)); } public IEnumerable GetAllAssetPaths() { return AssetDatabase.GetAllAssetPaths(); } public UnityEditor.PackageManager.PackageInfo FindForAssetPath(string assetPath) { return UnityEditor.PackageManager.PackageInfo.FindForAssetPath(assetPath); } public ResponseFileData ParseResponseFile(string responseFilePath, string projectDirectory, string[] systemReferenceDirectories) { return CompilationPipeline.ParseResponseFile( responseFilePath, projectDirectory, systemReferenceDirectories ); } } }