/// <summary> /// Register an AssetImporter object to be used when attempting to load an asset /// of the given type, or an asset file with one of the given extensions. /// </summary> /// <param name="assetImporter"></param> /// <param name="assetFileExtensions"></param> public static void RegisterAssetImporter<T>( AbstractAssetImporter assetImporter, params string[] assetFileExtensions) { var assetType = typeof(T); if (RegisteredAssetImportersByType.ContainsKey(assetType)) { throw new AssetImporterRegistrationException( String.Format("An asset importer has already been " + "associated with the type '{0}'.", assetType)); } RegisteredAssetImportersByType.Add(assetType, assetImporter); RegisterAssetImporter(assetImporter, assetFileExtensions); }
/// <summary> /// Register an AssetImporter object to b used when attempting to load an asset /// file with one of the given extensions. /// /// This is useful if you have multiple different asset importers for the same /// asset type but different asset file extensions. If two asset importers have /// the same associated asset type, but different asset file extensions, the /// AssetLoader will be able to determine the asset importer to use when given a /// file, but will not be able to distinguish the asset importer to use when /// given the asset type. /// /// To further illustrate: /// <code> /// AssetLoader.RegisterAssetImporter<Texture2D>(new AssetImporter1(), "doc", "xml"); /// AssetLoader.RegisterAssetImporter(new AssetImporter2(), "docx"); /// </code> /// /// In the above example, it is assumed that AssetImporter1 and AssetImporter2 both import /// Texture2D objects. Calling AssetLoader.Load<Texture2D>(fileName) would use AssetImporter1 /// to import the asset, as well as AssetLoader.LoadUsingExtension("something.doc"), but /// AssetLoader.LoadUsingExtension("something.docx") would use AssetImporter2, and /// AssetLoader.Load<Texture2D>("something.docx") would *still* attempt to use AssetImporter1, /// since that's the only asset importer associated with Texture2D. /// </summary> /// <param name="assetImporter"></param> /// <param name="assetFileExtensions"></param> public static void RegisterAssetImporter( AbstractAssetImporter assetImporter, params string[] assetFileExtensions) { foreach (var ext in assetFileExtensions) { var truncated = ext[0] == '.' ? ext.Substring(1) : ext; if (RegisteredAssetImportersByExtension.ContainsKey(truncated)) { throw new AssetImporterRegistrationException( String.Format("An asset importer has already been " + "associated with the extension '.{0}'", truncated)); } RegisteredAssetImportersByExtension.Add(truncated, assetImporter); } }