51 lines
1.8 KiB
C#
51 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEditor;
|
|
using UnityEditor.Compilation;
|
|
|
|
namespace VSCodeEditor
|
|
{
|
|
public interface IAssemblyNameProvider
|
|
{
|
|
string GetAssemblyNameFromScriptPath(string path);
|
|
IEnumerable<Assembly> GetAssemblies(Func<string, bool> shouldFileBePartOfSolution);
|
|
IEnumerable<string> 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<Assembly> GetAssemblies(Func<string, bool> shouldFileBePartOfSolution)
|
|
{
|
|
return CompilationPipeline.GetAssemblies()
|
|
.Where(i => 0 < i.sourceFiles.Length && i.sourceFiles.Any(shouldFileBePartOfSolution));
|
|
}
|
|
|
|
public IEnumerable<string> 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
|
|
);
|
|
}
|
|
}
|
|
}
|