public void Open(IncludeType type, string fileName, out Stream stream) { if (type == IncludeType.System) { stream = fileSystem.GetAssetStream(fileName); } else { string path = Path.Combine(Path.GetDirectoryName(fileSystem.GetAssetFullPath(originalAssetName)), fileName); stream = fileSystem.GetAssetStream(path); } }
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); }