コード例 #1
0
ファイル: FileAssetsDatabase.cs プロジェクト: hazevich/LDGJ45
        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;
        }
コード例 #2
0
ファイル: FileAssetsDatabase.cs プロジェクト: hazevich/LDGJ45
        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);
        }
コード例 #3
0
 protected abstract T CoreRead(
     AssetId assetId,
     byte[] content,
     IAssetsDatabase assetsDatabase,
     ISerializer serializer
     );
コード例 #4
0
        public object Load(AssetId assetId, string assetPath, IAssetsDatabase assetsDatabase, ISerializer serializer)
        {
            var fileContents = File.ReadAllBytes(assetPath);

            return(CoreRead(assetId, fileContents, assetsDatabase, serializer));
        }
コード例 #5
0
ファイル: FileAssetsDatabase.cs プロジェクト: hazevich/LDGJ45
 private string ConstructPath(AssetId assetId) => Path.Combine(_settings.AssetsBaseFolder, assetId);