public FileToAssetMappingNode GetFileNode(string id) { foreach (FileToAssetMappingNode fileNode in FileNodes) { if (fileNode.Id == id) { return(fileNode); } } FileToAssetMappingNode newFileToAssetMappingNode = new FileToAssetMappingNode { AssetId = id }; FileNodes.Add(newFileToAssetMappingNode); return(newFileToAssetMappingNode); }
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); }
private void GetDependenciesForAssetsInResolver(HashSet <string> changedAssets, IAssetToFileDependencyResolver resolver, Dictionary <string, FileToAssetsMapping> resultList, ProgressBase progress) { foreach (string assetId in changedAssets) { string fileId = NodeDependencyLookupUtility.GetGuidFromAssetId(assetId); if (!resultList.ContainsKey(fileId)) { resultList.Add(fileId, new FileToAssetsMapping { FileId = fileId }); } FileToAssetsMapping fileToAssetsMapping = resultList[fileId]; FileToAssetMappingNode fileToAssetMappingNode = fileToAssetsMapping.GetFileNode(assetId); fileToAssetMappingNode.Dependencies.Clear(); resolver.GetDependenciesForId(assetId, fileToAssetMappingNode.Dependencies); fileToAssetsMapping.Timestamp = NodeDependencyLookupUtility.GetTimeStampForFileId(fileId); } }