private void CreateSelectedAsset(GridViewData data, string selectedAssetPath, List <int> selectedIDs) { AssetDependencyData adData = data.GetData <AssetDependencyData>(); if (adData.assetPath == selectedAssetPath) { selectedIDs.Add(data.ID); return; } if (adData.allDepends != null && Array.IndexOf(adData.allDepends, selectedAssetPath) >= 0) { if (!data.IsExpand) { foreach (var childAssetPath in adData.directlyDepends) { if (IsAssetIgnored(childAssetPath)) { continue; } AssetDependencyData childADData = AssetDependencyUtil.GetDependencyData(childAssetPath); GridViewData viewData = new GridViewData(childAssetPath, childADData); AddChildData(data, viewData); } data.IsExpand = true; } foreach (var childData in data.Children) { CreateSelectedAsset(childData, selectedAssetPath, selectedIDs); } } }
protected override void OnDataExpand(GridViewData data) { if (data.IsExpand) { return; } AssetDependencyData adData = data.GetData <AssetDependencyData>(); if (adData.directlyDepends != null && adData.directlyDepends.Length > 0) { for (int i = 0; i < adData.directlyDepends.Length; ++i) { string assetPath = adData.directlyDepends[i]; if (IsAssetIgnored(assetPath)) { continue; } AssetDependencyData childADData = AssetDependencyUtil.GetDependencyData(assetPath); var childData = new GridViewData(assetPath, childADData); AddChildData(data, childData); } } }
private void DrawAllAssetDependency() { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.ObjectField("All Asset Data", m_AllAssetData, typeof(AllAssetDependencyData), false); if (GUILayout.Button("Reload", GUILayout.Width(80))) { if (EditorUtility.DisplayDialog("Warning", "This will take a lot of time.Are you sure?", "OK", "Cancel")) { AssetDependencyUtil.FindAllAssetData((title, message, progress) => { EditorUtility.DisplayProgressBar(title, message, progress); }); EditorUtility.ClearProgressBar(); if (!EditorUtility.IsPersistent(m_AllAssetData) && EditorUtility.DisplayDialog("Save As", "Do you want to save it?", "OK")) { string filePath = EditorUtility.SaveFilePanelInProject("save", "all_asset_dependency", "asset", "Save data as a asset"); if (!string.IsNullOrEmpty(filePath)) { AssetDatabase.CreateAsset(m_AllAssetData, filePath); } } } } } EditorGUILayout.EndHorizontal(); }
private void RefreshTreeView() { string assetPath = null; if (m_SelectedAsset != null) { assetPath = AssetDatabase.GetAssetPath(m_SelectedAsset); } if (string.IsNullOrEmpty(assetPath)) { int[] expandIDs = m_TreeView.GetViewModel <AssetDependencyTreeViewModel>().ShowDependency(new string[0]); m_TreeView.Reload(expandIDs, null); } else { if (m_ToolbarSelectedIndex == 0) { int[] expandIDs = m_TreeView.GetViewModel <AssetDependencyTreeViewModel>().ShowDependency(new string[] { assetPath }); m_TreeView.Reload(expandIDs, null); } else if (m_ToolbarSelectedIndex == 1) { var usedDatas = AssetDependencyUtil.GetAssetUsedBy(assetPath, (title, message, progress) => { EditorUtility.DisplayProgressBar(title, message, progress); }); EditorUtility.ClearProgressBar(); List <string> usedAssets = new List <string>(); if (usedDatas != null && usedDatas.Length > 0) { usedAssets.AddRange((from data in usedDatas select data.assetPath).ToArray()); } m_TreeView.GetViewModel <AssetDependencyTreeViewModel>().ShowDependency(usedAssets.ToArray()); m_TreeView.GetViewModel <AssetDependencyTreeViewModel>().ShowSelected(assetPath, out var expandIDs, out var selectedIDs); m_TreeView.Reload(expandIDs.ToArray(), selectedIDs.ToArray()); } } }
public int[] ShowDependency(string[] assetPaths) { Clear(); List <int> ids = new List <int>(); foreach (var assetPath in assetPaths) { if (IsAssetIgnored(assetPath)) { continue; } AssetDependencyData adData = AssetDependencyUtil.GetDependencyData(assetPath); GridViewData viewData = new GridViewData(assetPath, adData); AddChildData(RootData, viewData); ids.Add(viewData.ID); } return(ids.ToArray()); }
private void OnEnable() { m_AllAssetData = AssetDependencyUtil.GetOrCreateAllAssetData(); Selection.selectionChanged += OnSelectionChanged; EditorApplication.update += Repaint; }