public void UnloadPlugin(string name) { Logger.LogDebug("[JSPluginLoader] Unloading " + name + " plugin."); if (PluginLoader.GetInstance().Plugins.ContainsKey(name)) { BasePlugin plugin = PluginLoader.GetInstance().Plugins[name]; if (plugin.DontReload) { return; } JavaScriptPlugin jsplugin = (JavaScriptPlugin)plugin; if (plugin.Globals.Contains("On_PluginDeinit")) { plugin.Invoke("On_PluginDeinit"); } plugin.KillTimers(); PluginLoader.GetInstance().RemoveHooks(jsplugin); if (PluginLoader.GetInstance().Plugins.ContainsKey(name)) { PluginLoader.GetInstance().Plugins.Remove(name); } Logger.LogDebug("[JSPluginLoader] " + name + " plugin was unloaded successfuly."); } else { Logger.LogError("[JSPluginLoader] Can't unload " + name + ". Plugin is not loaded."); throw new InvalidOperationException("[JSPluginLoader] Can't unload " + name + ". Plugin is not loaded."); } }
public void UnloadPlugin(string name) { Logger.LogDebug("[CSharpPluginLoader] Unloading " + name + " plugin."); if (PluginLoader.GetInstance().Plugins.ContainsKey(name)) { BasePlugin plugin = PluginLoader.GetInstance().Plugins[name]; if (plugin.DontReload) { return; } CSPlugin csPlugin = (CSPlugin)plugin; try { csPlugin.Engine.DeInitialize(); } catch (Exception ex) { Logger.LogError(string.Format( "[Modules] Module \"{0}\" has thrown an exception while being deinitialized:\n{1}", csPlugin.Name, ex)); } plugin.KillTimers(); //PluginLoader.GetInstance().RemoveHooks(csPlugin); if (PluginLoader.GetInstance().Plugins.ContainsKey(name)) { PluginLoader.GetInstance().Plugins.Remove(name); } #pragma warning disable 618 foreach (var x in ModuleManager.Plugins) { if (x.Plugin == csPlugin.Engine) { ModuleManager.Modules.Remove(x); #pragma warning restore 618 break; } } Logger.LogDebug("[CSharpPluginLoader] " + name + " plugin was unloaded successfuly."); } else { Logger.LogError("[CSharpPluginLoader] Can't unload " + name + ". Plugin is not loaded."); throw new InvalidOperationException("[CSharpPluginLoader] Can't unload " + name + ". Plugin is not loaded."); } }