コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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());
                }
            }
        }
コード例 #5
0
        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());
        }
コード例 #6
0
 private void OnEnable()
 {
     m_AllAssetData              = AssetDependencyUtil.GetOrCreateAllAssetData();
     Selection.selectionChanged += OnSelectionChanged;
     EditorApplication.update   += Repaint;
 }