public static FileToAssetNode[] Deserialize(byte[] bytes) { int offset = 0; int numFileToAssetNodes = CacheSerializerUtils.DecodeShort(ref bytes, ref offset); FileToAssetNode[] fileToAssetNodes = new FileToAssetNode[numFileToAssetNodes]; for (int n = 0; n < numFileToAssetNodes; ++n) { string fileId = CacheSerializerUtils.DecodeString(ref bytes, ref offset); FileToAssetNode fileAssetNode = new FileToAssetNode { FileId = fileId }; int resolverTimeStampLength = CacheSerializerUtils.DecodeShort(ref bytes, ref offset); for (var i = 0; i < resolverTimeStampLength; i++) { FileToAssetNode.ResolverTimeStamp resolverTimeStamp = new FileToAssetNode.ResolverTimeStamp(); resolverTimeStamp.ResolverId = CacheSerializerUtils.DecodeString(ref bytes, ref offset); resolverTimeStamp.TimeStamp = CacheSerializerUtils.DecodeLong(ref bytes, ref offset); fileAssetNode.ResolverTimeStamps.Add(resolverTimeStamp); } int numAssetNodes = CacheSerializerUtils.DecodeShort(ref bytes, ref offset); for (var i = 0; i < numAssetNodes; i++) { string assetId = CacheSerializerUtils.DecodeString(ref bytes, ref offset); AssetNode assetNode = new AssetNode(assetId); int numResolverDatas = CacheSerializerUtils.DecodeShort(ref bytes, ref offset); for (int j = 0; j < numResolverDatas; ++j) { AssetNode.ResolverData data = new AssetNode.ResolverData(); data.ResolverId = CacheSerializerUtils.DecodeString(ref bytes, ref offset); data.Dependencies = CacheSerializerUtils.DecodeDependencies(ref bytes, ref offset); assetNode.ResolverDatas.Add(data); } fileAssetNode.AssetNodes.Add(assetNode); } fileToAssetNodes[n] = fileAssetNode; } string eof = CacheSerializerUtils.DecodeString(ref bytes, ref offset); if (!eof.Equals(EOF)) { Debug.LogError("AssetDependencyCache cache file to be corrupted. Rebuilding cache required"); return(new FileToAssetNode[0]); } return(fileToAssetNodes); }
public static FileToAssetsMapping[] Deserialize(byte[] bytes) { int offset = 0; int numAssetToFileNodes = CacheSerializerUtils.DecodeShort(ref bytes, ref offset); FileToAssetsMapping[] assetToFileMappings = new FileToAssetsMapping[numAssetToFileNodes]; for (int n = 0; n < numAssetToFileNodes; ++n) { FileToAssetsMapping mapping = new FileToAssetsMapping(); mapping.Timestamp = CacheSerializerUtils.DecodeLong(ref bytes, ref offset); mapping.FileId = CacheSerializerUtils.DecodeString(ref bytes, ref offset); int numFileNodes = CacheSerializerUtils.DecodeShort(ref bytes, ref offset); mapping.FileNodes = new List <FileToAssetMappingNode>(); for (int i = 0; i < numFileNodes; ++i) { FileToAssetMappingNode fileNode = new FileToAssetMappingNode(); fileNode.AssetId = CacheSerializerUtils.DecodeString(ref bytes, ref offset); fileNode.Dependencies = CacheSerializerUtils.DecodeDependencies(ref bytes, ref offset); mapping.FileNodes.Add(fileNode); } assetToFileMappings[n] = mapping; } string eof = CacheSerializerUtils.DecodeString(ref bytes, ref offset); if (!eof.Equals(EOF)) { Debug.LogError("AssetToFileDependencyCache cache file to be corrupted. Rebuilding cache required"); return(new FileToAssetsMapping[0]); } return(assetToFileMappings); }