public bool TryDetectIssue(RecordLocation location, string assetPath, GameObject target)
        {
            if (!CSPrefabTools.IsMissingPrefabInstance(target))
            {
                return(false);
            }

            if (enabled)
            {
                issues.Add(GameObjectIssueRecord.Create(IssueKind.MissingPrefab, location, assetPath, target));
            }

            return(true);
        }
Ejemplo n.º 2
0
        private static void ProcessPrefab(AssetInfo asset, string assetName, int prefabIndex, int totalPrefabs)
        {
            currentObjectIndex = 0;

            itemIndex  = prefabIndex;
            totalItems = totalPrefabs;

            currentAssetName = assetName;

            var prefabRootGameObject = CSPrefabTools.GetPrefabAssetRoot(asset.Path);

            if (prefabRootGameObject == null)
            {
                return;
            }
            IssuesDetector.StartPrefabAsset(asset);
            CSTraverseTools.TraversePrefabGameObjects(prefabRootGameObject, true, false, OnPrefabGameObjectTraverse);
            IssuesDetector.EndPrefabAsset(asset);
        }
Ejemplo n.º 3
0
        private Object GetObjectWithThisIssue()
        {
            Object result = null;

            if (Location == RecordLocation.Scene)
            {
                var scene = CSSceneTools.GetSceneByPath(Path);
                result = CSObjectTools.FindGameObjectInScene(scene, objectId, transformPath);
            }
            else
            {
                //var assetFile = AssetsMap.GetAssetInfoWithPath(path);
                var prefabRoot = CSPrefabTools.GetPrefabAssetRoot(Path);
                if (prefabRoot != null)
                {
                    result = CSObjectTools.FindChildGameObjectRecursive(prefabRoot.transform, objectId, prefabRoot.transform.name, transformPath);
                }
            }
            return(result);
        }
Ejemplo n.º 4
0
        private static bool OnGameObjectTraverse(ObjectTraverseInfo traverseInfo)
        {
            var target = traverseInfo.current;

            currentObjectCache = null;

            //Debug.Log("OnGameObjectTraverse " + target);

            if (traverseInfo.inPrefabInstance)
            {
                //Debug.Log("traverseInfo.dirtyComponents " + traverseInfo.dirtyComponents);
                var prefabAssetSource = CSPrefabTools.GetAssetSource(target);
                if (prefabAssetSource != null)
                {
                    var instanceId = prefabAssetSource.GetInstanceID();
                    TryAddEntryToMatchedConjunctions(target, instanceId, null);

                    if (traverseInfo.dirtyComponents == null)
                    {
                        traverseInfo.skipCurrentTree = true;
                        return(true);
                    }
                }
            }

            var thumbnail = AssetPreview.GetMiniThumbnail(target);

            if (thumbnail != null && (thumbnail.hideFlags & HideFlags.HideAndDontSave) == 0)
            {
                var addSettings = new EntryAddSettings
                {
                    prefix = "[Object Icon]",
                };
                TryAddEntryToMatchedConjunctions(target, thumbnail.GetInstanceID(), addSettings);
            }

            CSTraverseTools.TraverseGameObjectComponents(traverseInfo, OnGameObjectComponentTraverse);

            return(true);
        }
Ejemplo n.º 5
0
		public static bool OnGameObjectTraverse(ObjectTraverseInfo traverseInfo)
		{
			var target = traverseInfo.current;

			//Debug.Log("OnGameObjectTraverse " + target);

			if (traverseInfo.inPrefabInstance)
			{
				var prefabAssetSource = CSPrefabTools.GetAssetSource(target);
				if (prefabAssetSource != null)
				{
					var instanceId = prefabAssetSource.GetInstanceID();
					currentProcessReferenceCallback(target, instanceId, null);

					if (traverseInfo.dirtyComponents == null)
					{
						traverseInfo.skipCurrentTree = true;
						return true;
					}
				}
			}

			var thumbnail = AssetPreview.GetMiniThumbnail(target);
			if (thumbnail != null && (thumbnail.hideFlags & HideFlags.HideAndDontSave) == 0)
			{
				var addSettings = new EntryAddSettings
				{
					prefix = "[Object Icon]",
				};
				currentProcessReferenceCallback(target, thumbnail.GetInstanceID(), addSettings);
			}

			CSTraverseTools.TraverseGameObjectComponents(traverseInfo, OnGameObjectComponentTraverse);

			return true;
		}