diff --git a/IPA.Loader/IPA.Loader.csproj b/IPA.Loader/IPA.Loader.csproj index 49179841..bacdc995 100644 --- a/IPA.Loader/IPA.Loader.csproj +++ b/IPA.Loader/IPA.Loader.csproj @@ -128,7 +128,6 @@ - diff --git a/IPA.Loader/Loader/Composite/CompositeBSPlugin.cs b/IPA.Loader/Loader/Composite/CompositeBSPlugin.cs index 70bc6999..fc25db70 100644 --- a/IPA.Loader/Loader/Composite/CompositeBSPlugin.cs +++ b/IPA.Loader/Loader/Composite/CompositeBSPlugin.cs @@ -43,21 +43,25 @@ namespace IPA.Loader.Composite } } - public void OnUpdate() { - Invoke(plugin => plugin.Plugin.OnUpdate()); + public void OnUpdate() + { + Invoke(plugin => { + if (plugin.Plugin is IEnhancedPlugin saberPlugin) + saberPlugin.OnUpdate(); + }); } - public void OnFixedUpdate() { - Invoke(plugin => plugin.Plugin.OnFixedUpdate()); + public void OnFixedUpdate() + { + Invoke(plugin => { + if (plugin.Plugin is IEnhancedPlugin saberPlugin) + saberPlugin.OnFixedUpdate(); + }); } - public string Name => throw new InvalidOperationException(); - - public string Version => throw new InvalidOperationException(); - public void OnLateUpdate() { Invoke(plugin => { - if (plugin.Plugin is IGenericEnhancedPlugin saberPlugin) + if (plugin.Plugin is IEnhancedPlugin saberPlugin) saberPlugin.OnLateUpdate(); }); } diff --git a/IPA.Loader/PluginInterfaces/BeatSaber/IDisablablePlugin.cs b/IPA.Loader/PluginInterfaces/BeatSaber/IDisablablePlugin.cs index c270515c..f3be9e5a 100644 --- a/IPA.Loader/PluginInterfaces/BeatSaber/IDisablablePlugin.cs +++ b/IPA.Loader/PluginInterfaces/BeatSaber/IDisablablePlugin.cs @@ -3,7 +3,7 @@ /// /// Provides methods to allow runtime disabling of a plugin. /// - public interface IDisablablePlugin + public interface IDisablablePlugin : IPlugin { /// diff --git a/IPA.Loader/PluginInterfaces/BeatSaber/IEnhancedPlugin.cs b/IPA.Loader/PluginInterfaces/BeatSaber/IEnhancedPlugin.cs index c0dcc842..960c1688 100644 --- a/IPA.Loader/PluginInterfaces/BeatSaber/IEnhancedPlugin.cs +++ b/IPA.Loader/PluginInterfaces/BeatSaber/IEnhancedPlugin.cs @@ -10,7 +10,22 @@ namespace IPA /// /// An enhanced version of a standard BeatSaber plugin. /// - public interface IEnhancedPlugin : IPlugin, IGenericEnhancedPlugin + public interface IEnhancedPlugin : IPlugin { + + /// + /// Gets invoked on every graphic update. + /// + void OnUpdate(); + + /// + /// Gets invoked on ever physics update. + /// + void OnFixedUpdate(); + + /// + /// Called after Update. + /// + void OnLateUpdate(); } } diff --git a/IPA.Loader/PluginInterfaces/BeatSaber/IPlugin.cs b/IPA.Loader/PluginInterfaces/BeatSaber/IPlugin.cs index 7710e512..c298d87a 100644 --- a/IPA.Loader/PluginInterfaces/BeatSaber/IPlugin.cs +++ b/IPA.Loader/PluginInterfaces/BeatSaber/IPlugin.cs @@ -28,18 +28,6 @@ namespace IPA /// void OnApplicationQuit(); - // TODO: move more of these out of IPlugin - - /// - /// Gets invoked on every graphic update. - /// - void OnUpdate(); - - /// - /// Gets invoked on ever physics update. - /// - void OnFixedUpdate(); - /// /// Gets invoked whenever a scene is loaded. /// diff --git a/IPA.Loader/PluginInterfaces/IGenericEnhancedPlugin.cs b/IPA.Loader/PluginInterfaces/IGenericEnhancedPlugin.cs deleted file mode 100644 index 6a853c96..00000000 --- a/IPA.Loader/PluginInterfaces/IGenericEnhancedPlugin.cs +++ /dev/null @@ -1,24 +0,0 @@ -// ReSharper disable CheckNamespace - -using System; - -namespace IPA -{ - /// - /// A generic interface for the modification for enhanced plugins. - /// - public interface IGenericEnhancedPlugin - { - /// - /// Gets a list of executables this plugin should be executed on (without the file ending) - /// - /// { "PlayClub", "PlayClubStudio" } - [Obsolete("Ignored.")] - string[] Filter { get; } - - /// - /// Called after Update. - /// - void OnLateUpdate(); - } -} diff --git a/IPA.Loader/PluginInterfaces/IPA/IEnhancedPlugin.cs b/IPA.Loader/PluginInterfaces/IPA/IEnhancedPlugin.cs index 4db7fa06..9e4420b9 100644 --- a/IPA.Loader/PluginInterfaces/IPA/IEnhancedPlugin.cs +++ b/IPA.Loader/PluginInterfaces/IPA/IEnhancedPlugin.cs @@ -7,7 +7,7 @@ namespace IPA.Old /// /// An enhanced version of the standard IPA plugin. /// - [Obsolete("When building plugins for Beat Saber, use IEnhancedBeatSaberPlugin")] + [Obsolete("When building plugins for Beat Saber, use IPA.IEnhancedPlugin")] public interface IEnhancedPlugin : IPlugin { ///