public void InitializePlugins() { string[] directories = Directory.GetDirectories(Config.PluginsDir); foreach (string directory in directories) { string json = File.ReadAllText(directory + "/PluginConfig.json"); PluginConfig pluginConfig = DeserializeObject <PluginConfig>(json); Assembly asm = Assembly.LoadFrom(directory + "/" + pluginConfig.PluginAssembly); string typename = string.IsNullOrEmpty(pluginConfig.PluginNamespace) ? pluginConfig.PluginClass : pluginConfig.PluginNamespace + "." + pluginConfig.PluginClass; Type t = asm.GetType(typename); if (!pluginConfig.PluginActive) { continue; } IPlugin plugin = (IPlugin)Activator.CreateInstance(t); if (pluginConfig.PluginType == "Startup") { StartupPlugins.Add(new Plugin(plugin, pluginConfig)); } else { EditorPlugins.Add(new Plugin(plugin, pluginConfig)); } } }
private void InsertPluginAtRightPosition(EditorPluginView instance) { if (EditorPlugins.Contains(instance)) { return; } if (instance.GetType().Name == "SampleBrowserView" || instance.GetType().Name == "ProjectCreatorView") { EditorPlugins.Insert(0, instance); } else { EditorPlugins.Add(instance); } }