public void Store <T>(T asset, AssetId assetId) { var assetType = asset.GetType(); if (!_assetWriters.TryGetValue(assetType, out var assetWriter)) { throw new AssetWriterNotFoundException(assetType); } var assetPath = ConstructPath(assetId); assetWriter.Write(assetPath, asset, _serializer); _cachedAssets[assetId] = asset; }
public T Load <T>(AssetId assetId, bool cached = true) { var assetType = typeof(T); var assetPath = ConstructPath(assetId); if (cached && _cachedAssets.TryGetValue(assetId, out var assetObj)) { return((T)assetObj); } if (!_assetReaders.TryGetValue(assetType, out var assetReader)) { throw new AssetReaderNotFoundException(assetType); } var asset = (T)assetReader.Load(assetId, assetPath, this, _serializer); _cachedAssets[assetId] = asset; return(asset); }
protected abstract T CoreRead( AssetId assetId, byte[] content, IAssetsDatabase assetsDatabase, ISerializer serializer );
public object Load(AssetId assetId, string assetPath, IAssetsDatabase assetsDatabase, ISerializer serializer) { var fileContents = File.ReadAllBytes(assetPath); return(CoreRead(assetId, fileContents, assetsDatabase, serializer)); }
private string ConstructPath(AssetId assetId) => Path.Combine(_settings.AssetsBaseFolder, assetId);