Editor/Utilities/Path.cs
using Editor;

namespace ShaderGraphPlus.Utilities;

public static class Path
{

	public static string ChooseExistingPath( string path1, string path2 )
	{
		if ( Directory.Exists( path1 ) )
		{
			return path1;
		}
		else if ( Directory.Exists( path2 ) )
		{
			return path2;
		}
		else if ( Directory.Exists( path1 ) || Directory.Exists( path2 ) )
		{
			Log.Error( $"Both path 1 & path 2 exist!" );
			return null;
		}
		else
		{
			return null; // Neither path exists
		}
	}

	// Opens a specified textfile in Notepad.
	public static void OpenInNotepad( string path )
	{
		Process p = new Process();
		ProcessStartInfo psi = new ProcessStartInfo( "Notepad.exe", path );
		p.StartInfo = psi;
		p.Start();
	}

	/// <summary>
	/// Returns the absolute path of the current project.
	/// </summary>
	public static string GetProjectRootPath()
	{
		return GetProjectAbsolutePath();
	}

	/// <summary>
	/// Absolute path to the location of the .sbproj file of the project.
	/// </summary>
	public static string GetProjectAbsolutePath()
	{
		return Sandbox.Project.Current.GetRootPath().Replace( '\\', '/' );
	}

	/// <summary>
	/// Absolute path to a file or directory thats within a mounted library project.
	/// </summary>
	public static string GetLibaryAbsolutePath( string path )
	{
		return Editor.FileSystem.Libraries.GetFullPath( path ).Replace( '\\', '/' );
	}

	public static string GetProjectCodePath()
	{
		return Sandbox.Project.Current.GetCodePath().Replace( '\\', '/' );
	}

	public static string GetShaderPath( Asset asset )
	{
		var shaderPath = string.Empty;

		var path = System.IO.Path.ChangeExtension( asset.AbsolutePath, ".shader" );
		var _asset = AssetSystem.FindByPath( path );

		//Log.Info( $"Shader Path : {asset.Path}" );
		shaderPath = asset.Path;

		return shaderPath;
	}
}