Example #1
0
        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);
     }
 }