public string[] GetScatteredAssetNames(ScatteredAssetsOrder order, string filter) { HashSet <string> filterAssetNames = GetFilteredAssetNames(filter); IEnumerable <KeyValuePair <string, List <Asset> > > filteredResult = m_ScatteredAssets.Where(pair => filterAssetNames.Contains(pair.Key) && pair.Value.Count > 1); IEnumerable <KeyValuePair <string, List <Asset> > > orderedResult = null; switch (order) { case ScatteredAssetsOrder.AssetNameAsc: orderedResult = filteredResult.OrderBy(pair => pair.Key); break; case ScatteredAssetsOrder.AssetNameDesc: orderedResult = filteredResult.OrderByDescending(pair => pair.Key); break; case ScatteredAssetsOrder.HostAssetCountAsc: orderedResult = filteredResult.OrderBy(pair => pair.Value.Count); break; case ScatteredAssetsOrder.HostAssetCountDesc: orderedResult = filteredResult.OrderByDescending(pair => pair.Value.Count); break; default: orderedResult = filteredResult; break; } return(orderedResult.Select(pair => pair.Key).ToArray()); }
private void OnEnable() { m_Controller = new AssetBundleAnalyzerController(); m_Controller.OnLoadingAssetBundle += OnLoadingAssetBundle; m_Controller.OnLoadingAsset += OnLoadingAsset; m_Controller.OnLoadCompleted += OnLoadCompleted; m_Controller.OnAnalyzingAsset += OnAnalyzingAsset; m_Controller.OnAnalyzeCompleted += OnAnalyzeCompleted; m_Analyzed = false; m_ToolbarIndex = 0; m_AssetCount = 0; m_CachedAssetNames = null; m_SelectedAssetIndex = -1; m_SelectedAssetName = null; m_SelectedDependencyData = new DependencyData(); m_AssetsOrder = AssetsOrder.ScatteredDependencyAssetCountDesc; m_AssetsFilter = null; m_AssetsScroll = Vector2.zero; m_DependencyAssetBundlesScroll = Vector2.zero; m_DependencyAssetsScroll = Vector2.zero; m_ScatteredDependencyAssetsScroll = Vector2.zero; m_ScatteredAssetCount = 0; m_CachedScatteredAssetNames = null; m_SelectedScatteredAssetIndex = -1; m_SelectedScatteredAssetName = null; m_SelectedHostAssets = new Asset[] { }; m_ScatteredAssetsOrder = ScatteredAssetsOrder.HostAssetCountDesc; m_ScatteredAssetsFilter = null; m_ScatteredAssetsScroll = Vector2.zero; m_HostAssetsScroll = Vector2.zero; }
private void DrawScatteredAssetViewer() { if (!m_Analyzed) { DrawAnalyzeButton(); return; } EditorGUILayout.BeginHorizontal(); { GUILayout.Space(5f); EditorGUILayout.BeginVertical(GUILayout.Width(position.width * 0.4f)); { GUILayout.Space(5f); string title = null; if (string.IsNullOrEmpty(m_ScatteredAssetsFilter)) { title = Utility.Text.Format("Scattered Assets ({0})", m_ScatteredAssetCount); } else { title = Utility.Text.Format("Scattered Assets ({0}/{1})", m_CachedScatteredAssetNames.Length, m_ScatteredAssetCount); } EditorGUILayout.LabelField(title, EditorStyles.boldLabel); EditorGUILayout.BeginVertical("box", GUILayout.Height(position.height - 132f)); { m_ScatteredAssetsScroll = EditorGUILayout.BeginScrollView(m_ScatteredAssetsScroll); { int selectedIndex = GUILayout.SelectionGrid(m_SelectedScatteredAssetIndex, m_CachedScatteredAssetNames, 1, "toggle"); if (selectedIndex != m_SelectedScatteredAssetIndex) { m_SelectedScatteredAssetIndex = selectedIndex; m_SelectedScatteredAssetName = m_CachedScatteredAssetNames[selectedIndex]; m_SelectedHostAssets = m_Controller.GetHostAssets(m_SelectedScatteredAssetName); } } EditorGUILayout.EndScrollView(); } EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical("box"); { EditorGUILayout.LabelField("Scattered Asset Name", m_SelectedScatteredAssetName ?? "<None>"); EditorGUILayout.BeginHorizontal(); { ScatteredAssetsOrder scatteredAssetsOrder = (ScatteredAssetsOrder)EditorGUILayout.EnumPopup("Order by", m_ScatteredAssetsOrder); if (scatteredAssetsOrder != m_ScatteredAssetsOrder) { m_ScatteredAssetsOrder = scatteredAssetsOrder; OnScatteredAssetsOrderOrFilterChanged(); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { string scatteredAssetsFilter = EditorGUILayout.TextField("Assets Filter", m_ScatteredAssetsFilter); if (scatteredAssetsFilter != m_ScatteredAssetsFilter) { m_ScatteredAssetsFilter = scatteredAssetsFilter; OnScatteredAssetsOrderOrFilterChanged(); } EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(m_ScatteredAssetsFilter)); { if (GUILayout.Button("x", GUILayout.Width(20f))) { m_ScatteredAssetsFilter = null; GUI.FocusControl(null); OnScatteredAssetsOrderOrFilterChanged(); } } EditorGUI.EndDisabledGroup(); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(GUILayout.Width(position.width * 0.6f - 14f)); { GUILayout.Space(5f); EditorGUILayout.LabelField(Utility.Text.Format("Host Assets ({0})", m_SelectedHostAssets.Length), EditorStyles.boldLabel); EditorGUILayout.BeginVertical("box", GUILayout.Height(position.height - 68f)); { m_HostAssetsScroll = EditorGUILayout.BeginScrollView(m_HostAssetsScroll); { foreach (Asset hostAsset in m_SelectedHostAssets) { EditorGUILayout.BeginHorizontal(); { if (GUILayout.Button("GO", GUILayout.Width(30f))) { m_SelectedAssetName = hostAsset.Name; m_SelectedAssetIndex = new List <string>(m_CachedAssetNames).IndexOf(m_SelectedAssetName); m_SelectedDependencyData = m_Controller.GetDependencyData(m_SelectedAssetName); m_ToolbarIndex = 1; GUI.FocusControl(null); } GUILayout.Label(Utility.Text.Format("{0} [{1}]", hostAsset.Name, hostAsset.Resource.FullName)); } EditorGUILayout.EndHorizontal(); } } EditorGUILayout.EndScrollView(); } EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); } EditorGUILayout.EndHorizontal(); }