Beispiel #1
0
        private UnityObjectReferenceChain(IEnumerable <Object> objects)
        {
            var hashSet    = new HashSet <Object>();
            var dictionary = new ReferenceDictionary();

            foreach (var @object in objects)
            {
                dictionary.AddReference(@object);
                FindAssetReferencesRecursive(@object, hashSet, dictionary);
            }

            Result = dictionary.CreateReadonlyDictionary();
        }
Beispiel #2
0
        private void FindInternal(string baseFolder, bool forceOpenScene = false)
        {
            if (!Directory.Exists(baseFolder))
            {
                throw new FatalValidationErrorException(LocalizedMessage.Get("Vket5TargetFinder.PackageFolderNotFound"));
            }

            var exhibitorID = Path.GetFileName(baseFolder);

            var targetScene = OpenPackageScene(exhibitorID);

            scenes = new Scene[] { targetScene };
            var exhibitRootObject = GetExhibitRootObject(exhibitorID, targetScene);

            rootObjects = new GameObject[] { exhibitRootObject };

            allObjects = exhibitRootObject
                         .GetComponentsInChildren <Transform>(true)
                         .Select(tf => tf.gameObject)
                         .ToArray();

            ReferenceDictionary = GetContainsAndReferredAssets(baseFolder, allObjects);
            assetObjects        = ReferenceDictionary.Reverse.Keys
                                  .Where(asset => AssetDatabase.GetAssetPath(asset).StartsWith("Assets/"))
                                  .ToArray();

            assetPaths = assetObjects
                         .Select(asset => AssetDatabase.GetAssetPath(asset))
                         .ToArray();

            assetGUIDs = assetPaths
                         .Select(path => AssetDatabase.AssetPathToGUID(path))
                         .ToArray();

            target = new ValidationTarget(
                baseFolder,
                assetGUIDs,
                assetPaths,
                assetObjects,
                scenes,
                rootObjects,
                allObjects);

            finded = true;
        }