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);
}
}