public void RegisterImporter(IResourceImporter importer) { Importers.Insert(0, importer); if (ConfigState.Instance.UseVerboseLogging) { Debug.Log($"[ResourceLoader] registered resource importer \"{importer.GetType().Name}\""); } }
public T Load <T>(string assetName, bool lookInCache) { if (String.IsNullOrEmpty(assetName)) { throw new ArgumentException("Asset name can't be null or empty.", "assetName"); } Type requestedType = typeof(T); // Check cache for already loaded assets of given name and type if (lookInCache) { object cachedAsset = RequestAssetFromCache(assetName, requestedType); if (cachedAsset != null) { return((T)cachedAsset); } } // Find file system and importer for asset FileSystem fileSystem = FindSuitableFileSystem(assetName); if (fileSystem == null) { throw new SuitableFileSystemNotFoundException(assetName); } IResourceImporter importer = FindAppropriateImporter(assetName, requestedType); if (importer == null) { throw new AppropriateImporterNotFoundException(assetName, requestedType); } // Load asset Stream assetStream = fileSystem.GetAssetStream(assetName); var asset = (T)importer.Load(assetStream, new AssetImportContext(this, Services, assetName, fileSystem)); assetStream.Close(); // Save asset in cache SaveAssetInCache(assetName, requestedType, asset); return(asset); }
public FileResourceHandle(T resource, string path, ResourcePriority priority, ResourceLoadContext initialLoadContext) : this(resource, path, priority) { Importer = initialLoadContext.ResourceImporter; }