internal PluginAsset(AssetManager manager, ResourceManager resourceManager) : base(manager, resourceManager) { if (!(this is AssetPlugin)) { throw new InvalidOperationException(); } Plugin = (AssetPlugin)this; }
/// <summary>Attempt to load a plugin type.</summary> /// <param name="pluginType"></param> public void LoadPlugin(Type pluginType) { if (pluginType.IsAbstract || !pluginType.IsSubclassOf(typeof(AssetPlugin)) || HasPluginType(pluginType)) { return; } ConstructorInfo constructor = pluginType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[] { typeof(AssetManager) }, null); if (constructor == null) { throw new Exception(string.Format("Plugin {0} of assembly {1} does not have a ({2}) constructor.", pluginType.FullName, pluginType.Assembly.FullName, typeof(AssetManager).Name)); } AssetPlugin plugin = (AssetPlugin)constructor.Invoke(new object[] { this }); }
/// <summary>Initialise the plugin asset.</summary> /// <param name="plugin"></param> public PluginAsset(AssetPlugin plugin) : base(plugin.Manager, plugin.ResourceManager) { Plugin = plugin; }
/// <summary> /// Initialise the plugin asset. /// </summary> /// <param name="plugin"></param> public PluginFormatAsset(AssetPlugin plugin) : base(plugin) { }