using UnityEngine.SceneManagement;
// ReSharper disable CheckNamespace
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);
}
}