using System; using System.Collections.Generic; using System.Text; using UnityEngine.SceneManagement; namespace IPA { /// /// Interface for Beat Saber plugins. Every class that implements this will be loaded if the DLL is placed at /// data/Managed/Plugins. /// public interface IBeatSaberPlugin { /// /// Gets the name of the plugin. /// string Name { get; } /// /// Gets the version of the plugin. /// string Version { get; } /// /// Gets the info for the Modsaber release of this plugin. Return null if there is no Modsaber release. /// ModsaberModInfo ModInfo { get; } /// /// Gets invoked when the application is started. /// void OnApplicationStart(); /// /// Gets invoked when the application is closed. /// void OnApplicationQuit(); /// /// Gets invoked on every graphic update. /// void OnUpdate(); /// /// Gets invoked on ever physics update. /// void OnFixedUpdate(); /// /// Gets invoked whenever a scene is loaded. /// /// The scene currently loaded /// The type of loading void OnSceneLoaded(Scene scene, LoadSceneMode sceneMode); /// /// Gets invoked whenever a scene is unloaded /// /// The unloaded scene void OnSceneUnloaded(Scene scene); /// /// Gets invoked whenever a scene is changed /// /// The Scene that was previously loaded /// The Scene being loaded void OnActiveSceneChanged(Scene prevScene, Scene nextScene); } }