#pragma warning disable 162
using System.IO;
using UnityEngine;
namespace Unity.VisualScripting
{
[PluginModule(required = true)]
public class PluginPaths : IPluginModule
{
protected PluginPaths(Plugin plugin)
{
this.plugin = plugin;
}
public virtual void Initialize()
{
if (isFirstPass)
{
Debug.LogWarning($"Plugin '{plugin.id}' is in a special folder that makes it compile first.\nThis might cause issues with generated assets.");
}
}
public virtual void LateInitialize() { }
public Plugin plugin { get; }
private static string _package;
// Note: The Bolt 'package' can exist within the Assets folder OR within the Packages folder in a project, depending on
// when we release Bolt as a package / what the user has set up in an existing project.
public static string package
{
get
{
if (_package == null)
{
_package = PathUtility.GetPackageRootPath();
}
return _package;
}
}
public const string FOLDER_BOLT_GENERATED = "Unity.VisualScripting.Generated";
public static string ASSETS_FOLDER_BOLT_GENERATED = Path.Combine("Assets", FOLDER_BOLT_GENERATED);
public bool isFirstPass => package.Contains("/Plugins/") || package.Contains("/Standard Assets/") || package.Contains("/Pro Standard Assets/");
public static string resourcesFolder => Path.Combine(package, $"Editor/VisualScripting.Core/EditorAssetResources");
internal const string assetBundleRoot = "Assets/EditorResources";
internal const string assetBundle = "visualscripting.editor_assets";
public static string resourcesBundle = Path.Combine(package, $"Editor/VisualScripting.Core/EditorAssetResources/{assetBundle}");
public static string generated => Path.Combine(Paths.assets, FOLDER_BOLT_GENERATED);
public string persistentGenerated => Path.Combine(generated, plugin.id);
public string transientGenerated => Path.Combine(generated, plugin.id);
public static string projectSettings => Path.Combine(Paths.project, "ProjectSettings", "VisualScriptingSettings.asset");
}
}