예제 #1
0
        public void GetDependenciesForId(string assetId, List <Dependency> dependencies)
        {
            Progress.IncreaseProgress();
            string fileId = NodeDependencyLookupUtility.GetGuidFromAssetId(assetId);

            dependencies.Add(new Dependency(fileId, ResolvedType, "File", new [] { new PathSegment("File", PathSegmentType.Property) }));
        }
예제 #2
0
        private void GetDependenciesForAssetsInResolver(HashSet <string> changedAssets, IAssetDependencyResolver resolver, Dictionary <string, FileToAssetNode> resultList, ProgressBase progress)
        {
            string resolverId = resolver.GetId();

            foreach (string assetId in changedAssets)
            {
                string fileId = NodeDependencyLookupUtility.GetGuidFromAssetId(assetId);

                if (!resultList.ContainsKey(fileId))
                {
                    resultList.Add(fileId, new FileToAssetNode {
                        FileId = fileId
                    });
                }

                FileToAssetNode fileToAssetNode = resultList[fileId];
                AssetNode       assetNode       = fileToAssetNode.GetAssetNode(assetId);

                List <Dependency> dependencies = new List <Dependency>();

                resolver.GetDependenciesForId(assetId, dependencies);

                AssetNode.ResolverData resolverData = assetNode.GetResolverData(resolverId);

                resolverData.Dependencies = dependencies;

                fileToAssetNode.GetResolverTimeStamp(resolverId).TimeStamp =
                    NodeDependencyLookupUtility.GetTimeStampForFileId(fileId);
            }
        }
        private void AddPrefabAsDependency(string id, Object obj, Stack <PathSegment> stack)
        {
            Object correspondingObjectFromSource = PrefabUtility.GetCorrespondingObjectFromSource(obj);
            string assetId   = NodeDependencyLookupUtility.GetAssetIdForAsset(correspondingObjectFromSource);
            string assetPath = AssetDatabase.GetAssetPath(correspondingObjectFromSource);
            string guid      = AssetDatabase.AssetPathToGUID(assetPath);

            if (guid != NodeDependencyLookupUtility.GetGuidFromAssetId(id))
            {
                AddDependency(id, new Dependency(assetId, ConnectionType, NodeType, stack.ToArray()));
            }
        }
예제 #4
0
        public void Initialize(AssetDependencyCache cache, HashSet <string> changedAssets, ProgressBase progress)
        {
            TraverserSubSystem.Clear();

            foreach (string assetId in changedAssets)
            {
                string guid = NodeDependencyLookupUtility.GetGuidFromAssetId(assetId);
                if (!_inValidGuids.Contains(guid))
                {
                    cache._hierarchyTraverser.AddAssetId(assetId, TraverserSubSystem);
                }
            }
        }
        public override Result GetDependency(Type objType, object obj, SerializedProperty property, string propertyPath, SerializedPropertyType type, Stack <PathSegment> stack)
        {
            if (type != SerializedPropertyType.ObjectReference)
            {
                return(null);
            }

            var value = property.objectReferenceValue;

            if (value == null)
            {
                return(null);
            }

            string assetPath = AssetDatabase.GetAssetPath(value);

            if (string.IsNullOrEmpty(assetPath))
            {
                return(null);
            }

            if (ExcludedProperties.Contains(propertyPath))
            {
                return(null);
            }

            if (ExcludedDependencies.Contains(Path.GetFileName(assetPath)))
            {
                return(null);
            }

            string assetId = NodeDependencyLookupUtility.GetAssetIdForAsset(value);
            string guid    = NodeDependencyLookupUtility.GetGuidFromAssetId(assetId);

            if (!(guid.StartsWith("0000000") || value is ScriptableObject || AssetDatabase.IsSubAsset(value) || AssetDatabase.IsMainAsset(value)))
            {
                return(null);
            }

            return(new Result {
                Id = assetId, ConnectionType = ConnectionType, NodeType = NodeType
            });
        }
예제 #6
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);
            }
        }