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.");
            }
        }
Exemple #2
0
        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.");
            }
        }