using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Reflection; namespace Unity.VisualScripting { public abstract class Plugin { protected Plugin() { id = PluginContainer.GetPluginID(GetType()); dependencies = PluginContainer.pluginDependencies[id].Select(PluginContainer.GetPlugin).ToList().AsReadOnly(); } public string id { get; } public ReadOnlyCollection dependencies { get; } public PluginManifest manifest { get; internal set; } public PluginConfiguration configuration { get; internal set; } public PluginPaths paths { get; internal set; } public PluginResources resources { get; internal set; } public virtual IEnumerable scriptReferenceReplacements => Enumerable.Empty(); public virtual IEnumerable aotStubs => Enumerable.Empty(); public virtual IEnumerable tips => Enumerable.Empty(); public virtual IEnumerable SetupWizardPages() { return Enumerable.Empty(); } public Assembly editorAssembly => GetType().Assembly; public Assembly runtimeAssembly { get { return Codebase.ludiqRuntimeAssemblies.Single(a => a.GetName().Name == GetType().GetAttribute().assemblyName); } } public virtual void RunAction() { } } }