示例#1
0
        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());
        }
示例#2
0
        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);
            }
        }