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); }
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); }
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); }
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); }
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; }