using UnityEngine.SceneManagement; namespace IPA { /// /// Interface for BSIPA plugins. Every class that implements this will be loaded if the DLL is placed at /// <install dir>/Plugins. /// /// /// Mods implemented with this interface should handle being enabled at runtime properly, unless marked /// with the "no-runtime-enable" feature. /// public interface IPlugin { /// /// Called when a plugin is enabled. This is where you should set up Harmony patches and the like. /// /// /// This will be called after Init, and will be called when the plugin loads normally too. /// When a plugin is disabled at startup, neither this nor Init will be called until it is enabled. /// /// Init will only ever be called once. /// void OnEnable(); /// /// Gets invoked when the application is closed. /// 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. /// /// 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); } }