public void UnloadPlugin(string name, bool removeFromDict = true) { Logger.LogDebug("[IPModule] Unloading " + name + " plugin."); if (plugins.ContainsKey(name)) { IPPlugin plugin = plugins[name]; if (plugin.Globals.Contains("On_PluginShutdown")) { plugin.Engine.Operations.InvokeMember(plugin.Class, "On_PluginShutdown", new object[0]); } plugin.OnPluginShutdown(); plugin.KillTimers(); RemoveHooks(plugin); if (removeFromDict) { plugins.Remove(name); } Logger.LogDebug("[IPModule] " + name + " plugin was unloaded successfuly."); } else { Logger.LogError("[IPModule] Can't unload " + name + ". Plugin is not loaded."); throw new InvalidOperationException("[IPModule] Can't unload " + name + ". Plugin is not loaded."); } }
public void UnloadPlugin(string name, bool removeFromDict = true) { Logger.LogDebug("[IPModule] Unloading " + name + " plugin."); if (plugins.ContainsKey(name)) { IPPlugin plugin = plugins[name]; plugin.OnPluginShutdown(); plugin.KillTimers(); RemoveHooks(plugin); if (removeFromDict) { plugins.Remove(name); } GlobalPluginCollector.GetPluginCollector().RemovePlugin(name); Logger.Log("[IPModule] " + name + " plugin was unloaded successfully."); } else { Logger.LogError("[IPModule] Can't unload " + name + ". Plugin is not loaded."); //throw new InvalidOperationException("[IPModule] Can't unload " + name + ". Plugin is not loaded."); } }