Пример #1
0
        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);
        }
Пример #3
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);
            }
        }