private void RefreshData() { profiles = new List <ImportDefinitionProfile>(); profileNames = new List <string>(); GetAuditorProfiles( ); if (m_AssetListState == null) { m_AssetListState = new TreeViewState(); } IList <int> selection = null; if (m_AssetList != null) { selection = m_AssetList.GetSelection(); } m_AssetList = new AssetsTreeView(m_AssetListState); if (profiles.Count > 0 && selected < profiles.Count) { m_AssetList.m_Profile = profiles[selected]; } m_AssetList.Reload(); if (m_PropertyListState == null) { m_PropertyListState = new TreeViewState(); } m_ModularTreeView = new ModularDetailTreeView(m_PropertyListState); m_AssetList.m_ModularTreeView = m_ModularTreeView; m_ModularTreeView.Reload(); if (selection != null) { m_AssetList.SetupSelection(selection); } }
private void ContextMenuSelectionCallback(object ctx) { AssetViewItemMenuContext menuContext = ctx as AssetViewItemMenuContext; if (menuContext == null) { Debug.LogError("Incorrect context received from AssetTreeViewItem context menu"); return; } List <AssetsTreeViewItem> assets = new List <AssetsTreeViewItem>(); List <AssetsTreeViewItem> folders = new List <AssetsTreeViewItem>(); for (int i = 0; i < menuContext.m_Items.Count; ++i) { if (menuContext.m_Items[i].isAsset == false) { GetAssetItems(menuContext.m_Items[i], assets, folders); if (folders.Contains(menuContext.m_Items[i]) == false) { folders.Add(menuContext.m_Items[i]); } } else if (menuContext.m_Items[i].conforms == false && assets.Contains(menuContext.m_Items[i]) == false) { assets.Add(menuContext.m_Items[i]); } } List <string> assetPaths = new List <string>(assets.Count); for (int i = 0; i < assets.Count; ++i) { assetPaths.Add(assets[i].path); } for (int i = 0; i < menuContext.m_Modules.Count; ++i) { if (menuContext.m_Modules[i] == null) { Debug.LogError("Module became null during window use, report issue"); continue; } menuContext.m_Modules[i].SetManuallyProcessing(assetPaths, true); } // reimport all the assets -> triggering the modules to process them (including any that profiles always do) AssetDatabase.StartAssetEditing(); for (int i = 0; i < assets.Count; ++i) { assets[i].ReimportAsset(); } AssetDatabase.StopAssetEditing(); foreach (IImportTask module in menuContext.m_Modules) { Type conformObjectType = module.GetConformObjectType(); for (int i = 0; i < assets.Count; ++i) { // TODO confirm that it now conforms, currently just set everything as Conforms foreach (ConformData data in assets[i].conformData) { foreach (IConformObject conformObject in data.ConformObjects) { if (conformObject.GetType() == conformObjectType) { SetConformObjectRecursive(conformObject, true, conformObjectType); } } } } } List <AssetsTreeViewItem> checkFoldersForConform = new List <AssetsTreeViewItem>(); for (int i = 0; i < assets.Count; ++i) { assets[i].Refresh(); AssetsTreeViewItem parent = assets[i].parent as AssetsTreeViewItem; if (parent != null & checkFoldersForConform.Contains(parent) == false) { checkFoldersForConform.Add(parent); } } for (int i = 0; i < folders.Count; ++i) { if (folders[i].conformData == null) { folders[i].conforms = true; folders[i].Refresh(); AssetsTreeViewItem parent = folders[i].parent as AssetsTreeViewItem; if (parent != null && parent.conforms == false && checkFoldersForConform.Contains(parent) == false) { checkFoldersForConform.Add(parent); } } } while (checkFoldersForConform.Count > 0) { bool conforms = true; for (int i = 0; i < checkFoldersForConform[0].children.Count; ++i) { AssetsTreeViewItem item = checkFoldersForConform[0].children[i] as AssetsTreeViewItem; if (item != null && item.conforms == false) { conforms = false; } } if (conforms) { checkFoldersForConform[0].conforms = true; AssetsTreeViewItem parent = checkFoldersForConform[0].parent as AssetsTreeViewItem; if (parent != null & checkFoldersForConform.Contains(parent) == false) { checkFoldersForConform.Add(parent); } } checkFoldersForConform.RemoveAt(0); } m_ModularTreeView.Reload(); }