private FileToAssetsMapping[] GetDependenciesForAssets(FileToAssetsMapping[] fileToAssetsMappings, CreatedDependencyCache createdDependencyCache, ProgressBase progress) { string[] pathes = NodeDependencyLookupUtility.GetAllAssetPathes(progress, true); long[] timestamps = NodeDependencyLookupUtility.GetTimeStampsForFiles(pathes); List <AssetResolverData> data = new List <AssetResolverData>(); foreach (CreatedResolver resolverUsage in createdDependencyCache.ResolverUsages) { if (!(resolverUsage.Resolver is IAssetToFileDependencyResolver)) { continue; } IAssetToFileDependencyResolver resolver = (IAssetToFileDependencyResolver)resolverUsage.Resolver; HashSet <string> changedAssets = GetChangedAssetIds(pathes, timestamps, fileToAssetsMappings); data.Add(new AssetResolverData { ChangedAssets = changedAssets, Resolver = resolver }); resolver.Initialize(this, changedAssets, progress); } Dictionary <string, FileToAssetsMapping> nodeDict = RelationLookup.RelationLookupBuilder.ConvertToDictionary(fileToAssetsMappings); foreach (AssetResolverData resolverData in data) { GetDependenciesForAssetsInResolver(resolverData.ChangedAssets, resolverData.Resolver as IAssetToFileDependencyResolver, nodeDict, progress); } return(nodeDict.Values.ToArray()); }
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); } }