private HashSet <string> GetChangedAssetIdsForResolver(IAssetDependencyResolver resolver, string[] pathes, long[] timestamps, FileToAssetNode[] fileToAssetNodes) { HashSet <string> result = new HashSet <string>(); Dictionary <string, FileToAssetNode> list = RelationLookup.RelationLookupBuilder.ConvertToDictionary(fileToAssetNodes); string id = resolver.GetId(); string progressBarTitle = $"AssetDependencyCache: {id}"; float lastDisplayedPercentage = 0; for (int i = 0; i < pathes.Length; ++i) { float progressPercentage = (float)i / pathes.Length; if (progressPercentage - lastDisplayedPercentage > 0.01f) { EditorUtility.DisplayProgressBar(progressBarTitle, $"Finding changed assets {result.Count}", (float)i / pathes.Length); lastDisplayedPercentage = progressPercentage; } string path = pathes[i]; string guid = AssetDatabase.AssetPathToGUID(path); if (!resolver.IsGuidValid(guid)) { continue; } if (list.ContainsKey(guid)) { FileToAssetNode fileToAssetNode = list[guid]; foreach (AssetNode assetNode in fileToAssetNode.AssetNodes) { assetNode.Existing = true; } if (fileToAssetNode.GetResolverTimeStamp(id).TimeStamp != timestamps[i]) { NodeDependencyLookupUtility.AddAssetsToList(result, path); } } else { NodeDependencyLookupUtility.AddAssetsToList(result, path); } } return(result); }
private bool CheckNeedsUpdateForResolver(IAssetDependencyResolver resolver, string[] pathes, long[] timestamps, FileToAssetNode[] fileToAssetNodes) { Dictionary <string, FileToAssetNode> list = RelationLookup.RelationLookupBuilder.ConvertToDictionary(fileToAssetNodes); string id = resolver.GetId(); string progressBarTitle = $"AssetDependencyCache: {id}"; for (int i = 0; i < pathes.Length; ++i) { EditorUtility.DisplayProgressBar(progressBarTitle, "Checking for required update", (float)i / pathes.Length); string path = pathes[i]; string guid = AssetDatabase.AssetPathToGUID(path); if (!resolver.IsGuidValid(guid)) { continue; } if (list.ContainsKey(guid)) { FileToAssetNode fileToAssetNode = list[guid]; foreach (AssetNode assetNode in fileToAssetNode.AssetNodes) { assetNode.Existing = true; } if (fileToAssetNode.GetResolverTimeStamp(id).TimeStamp != timestamps[i]) { return(true); } } else { return(true); } } return(false); }