void DrawAssetList(BuildReportTool.AssetList list, BuildReportTool.FileFilterGroup filter, int length) { GUILayout.BeginHorizontal(); GUILayout.Label(ASSET_SIZE_BREAKDOWN_MSG_PRE_BOLD, INFO_SUBTITLE_STYLE_NAME); GUILayout.Label(ASSET_SIZE_BREAKDOWN_MSG_BOLD, INFO_SUBTITLE_BOLD_STYLE_NAME); GUILayout.Label(ASSET_SIZE_BREAKDOWN_MSG_POST_BOLD, INFO_SUBTITLE_STYLE_NAME); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); if (list != null) { BuildReportTool.SizePart[] assetListToUse = list.GetListToDisplay(filter); if (assetListToUse != null) { if (assetListToUse.Length == 0) { GUILayout.Label(NO_FILES_FOR_THIS_CATEGORY, INFO_TITLE_STYLE_NAME); } else { const int LIST_HEIGHT = 20; const int ICON_DISPLAY_SIZE = 15; EditorGUIUtility.SetIconSize(Vector2.one * ICON_DISPLAY_SIZE); bool useAlt = false; int viewOffset = list.GetViewOffsetForDisplayedList(filter); // if somehow view offset was out of bounds of the SizePart[] array // reset it to zero if (viewOffset >= assetListToUse.Length) { list.SetViewOffsetForDisplayedList(filter, 0); viewOffset = 0; } int len = Mathf.Min(viewOffset + length, assetListToUse.Length); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); useAlt = false; for (int n = viewOffset; n < len; ++n) { BuildReportTool.SizePart b = assetListToUse[n]; string styleToUse = useAlt ? LIST_SMALL_ALT_STYLE_NAME : LIST_SMALL_STYLE_NAME; bool inSumSelect = list.InSumSelection(b); if (inSumSelect) { styleToUse = LIST_SMALL_SELECTED_NAME; } GUILayout.BeginHorizontal(); bool newInSumSelect = GUILayout.Toggle(inSumSelect, ""); if (inSumSelect != newInSumSelect) { if (newInSumSelect) { list.AddToSumSelection(b); } else { list.RemoveFromSumSelection(b); } } Texture icon = AssetDatabase.GetCachedIcon(b.Name); if (GUILayout.Button(new GUIContent((n+1) + ". " + b.Name, icon), styleToUse, GUILayout.Height(LIST_HEIGHT))) { PingAssetInProject(b.Name); } GUILayout.EndHorizontal(); useAlt = !useAlt; } GUILayout.EndVertical(); GUILayout.BeginVertical(); useAlt = false; for (int n = viewOffset; n < len; ++n) { BuildReportTool.SizePart b = assetListToUse[n]; string styleToUse = useAlt ? LIST_SMALL_ALT_STYLE_NAME : LIST_SMALL_STYLE_NAME; if (list.InSumSelection(b)) { styleToUse = LIST_SMALL_SELECTED_NAME; } GUILayout.Label(b.Size, styleToUse, GUILayout.MinWidth(50), GUILayout.Height(LIST_HEIGHT)); useAlt = !useAlt; } GUILayout.EndVertical(); GUILayout.BeginVertical(); useAlt = false; for (int n = viewOffset; n < len; ++n) { BuildReportTool.SizePart b = assetListToUse[n]; string styleToUse = useAlt ? LIST_SMALL_ALT_STYLE_NAME : LIST_SMALL_STYLE_NAME; if (list.InSumSelection(b)) { styleToUse = LIST_SMALL_SELECTED_NAME; } string text = b.Percentage + "%"; if (b.Percentage < 0) { text = NON_APPLICABLE_PERCENTAGE; } GUILayout.Label(text, styleToUse, GUILayout.MinWidth(30), GUILayout.Height(LIST_HEIGHT)); useAlt = !useAlt; } GUILayout.EndVertical(); GUILayout.EndHorizontal(); } } } }
void DrawAssetList(Rect position, BuildReportTool.AssetList list, BuildReportTool.FileFilterGroup filter, int length) { if (list != null) { BuildReportTool.SizePart[] assetListToUse = list.GetListToDisplay(filter); if (assetListToUse != null) { if (assetListToUse.Length == 0) { GUILayout.BeginHorizontal(); GUILayout.Space(10); GUILayout.Label(Labels.NO_FILES_FOR_THIS_CATEGORY_LABEL, BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME); GUILayout.EndHorizontal(); } else { EditorGUIUtility.SetIconSize(Vector2.one * ICON_DISPLAY_SIZE); bool useAlt = false; int viewOffset = list.GetViewOffsetForDisplayedList(filter); // if somehow view offset was out of bounds of the SizePart[] array // reset it to zero if (viewOffset >= assetListToUse.Length) { list.SetViewOffsetForDisplayedList(filter, 0); viewOffset = 0; } int len = Mathf.Min(viewOffset + length, assetListToUse.Length); GUILayout.BeginHorizontal(); // column: asset path and name GUILayout.BeginVertical(); useAlt = false; //GUILayout.Box("", BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_STYLE_NAME, GUILayout.Height(LIST_HEIGHT), GUILayout.Width(position.width)); GUILayout.BeginHorizontal(); string sortTypeAssetFullPathStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_STYLE_NAME; if (list.CurrentSortType == BuildReportTool.AssetList.SortType.AssetFullPath) { if (list.CurrentSortOrder == BuildReportTool.AssetList.SortOrder.Descending) { sortTypeAssetFullPathStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_DESC_STYLE_NAME; } else { sortTypeAssetFullPathStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_ASC_STYLE_NAME; } } if ( GUILayout.Button("Asset Path", sortTypeAssetFullPathStyleName, GUILayout.Height(LIST_HEIGHT)) ) { list.ToggleSort(BuildReportTool.AssetList.SortType.AssetFullPath); } string sortTypeAssetFilenameStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_STYLE_NAME; if (list.CurrentSortType == BuildReportTool.AssetList.SortType.AssetFilename) { if (list.CurrentSortOrder == BuildReportTool.AssetList.SortOrder.Descending) { sortTypeAssetFilenameStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_DESC_STYLE_NAME; } else { sortTypeAssetFilenameStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_ASC_STYLE_NAME; } } if (GUILayout.Button("Asset Filename", sortTypeAssetFilenameStyleName, GUILayout.Height(LIST_HEIGHT))) { list.ToggleSort(BuildReportTool.AssetList.SortType.AssetFilename); } GUILayout.EndHorizontal(); _assetListScrollPos = GUILayout.BeginScrollView(_assetListScrollPos, BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME, BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME); for (int n = viewOffset; n < len; ++n) { BuildReportTool.SizePart b = assetListToUse[n]; string styleToUse = useAlt ? BuildReportTool.Window.Settings.LIST_SMALL_ALT_STYLE_NAME : BuildReportTool.Window.Settings.LIST_SMALL_STYLE_NAME; bool inSumSelect = list.InSumSelection(b); if (inSumSelect) { styleToUse = BuildReportTool.Window.Settings.LIST_SMALL_SELECTED_NAME; } GUILayout.BeginHorizontal(); // checkbox for selecting bool newInSumSelect = GUILayout.Toggle(inSumSelect, "", GUILayout.Width(20)); if (inSumSelect != newInSumSelect) { if (newInSumSelect) { list.AddToSumSelection(b); } else { list.RemoveFromSumSelection(b); } } // the asset name Texture icon = AssetDatabase.GetCachedIcon(b.Name); string prettyName = string.Empty; prettyName = string.Format(" {0}. <color=#{1}>{2}{3}</color><b>{4}</b>", (n+1), GetPathColor(inSumSelect), BuildReportTool.Util.GetAssetPath(b.Name), BuildReportTool.Util.GetAssetPathToNameSeparator(b.Name), BuildReportTool.Util.GetAssetFilename(b.Name)); GUIStyle styleObjToUse = GUI.skin.GetStyle(styleToUse); Color temp = styleObjToUse.normal.textColor; int origLeft = styleObjToUse.padding.left; int origRight = styleObjToUse.padding.right; styleObjToUse.normal.textColor = styleObjToUse.onNormal.textColor; styleObjToUse.padding.right = 0; if (icon == null) { //GUILayout.BeginHorizontal(styleObjToUse); GUILayout.Space(15); //GUILayout.EndHorizontal(); } styleObjToUse.normal.textColor = temp; styleObjToUse.padding.left = 2; if (GUILayout.Button(new GUIContent(prettyName, icon), styleObjToUse, GUILayout.Height(LIST_HEIGHT))) { Utility.PingAssetInProject(b.Name); } styleObjToUse.padding.right = origRight; styleObjToUse.padding.left = origLeft; GUILayout.EndHorizontal(); useAlt = !useAlt; } GUILayout.EndScrollView(); GUILayout.EndVertical(); // column: raw file size bool pressedRawSizeSortBtn = DrawColumn(viewOffset, len, BuildReportTool.AssetList.SortType.RawSize, (IsShowingUnusedAssets ? "Raw Size" : "Size"), false, list, assetListToUse, (b) => { return b.RawSize; }, ref _assetListScrollPos); bool showScrollbarForImportedSize = IsShowingUnusedAssets; // column: imported file size bool pressedImpSizeSortBtn = false; if (IsShowingUnusedAssets) { pressedImpSizeSortBtn = DrawColumn(viewOffset, len, BuildReportTool.AssetList.SortType.ImportedSize, "Imported Size ", showScrollbarForImportedSize, list, assetListToUse, (b) => { return b.ImportedSize; }, ref _assetListScrollPos); } // column: percentage to total size bool pressedPercentSortBtn = false; if (IsShowingUsedAssets) { pressedPercentSortBtn = DrawColumn(viewOffset, len, BuildReportTool.AssetList.SortType.PercentSize, "Percent ", true, list, assetListToUse, (b) => { string text = b.Percentage + "%"; if (b.Percentage < 0) { text = Labels.NON_APPLICABLE_PERCENTAGE_LABEL; } return text; }, ref _assetListScrollPos); } if (pressedRawSizeSortBtn) { list.ToggleSort(BuildReportTool.AssetList.SortType.RawSize); } else if (pressedImpSizeSortBtn) { list.ToggleSort(BuildReportTool.AssetList.SortType.ImportedSize); } else if (pressedPercentSortBtn) { list.ToggleSort(BuildReportTool.AssetList.SortType.PercentSize); } GUILayout.EndHorizontal(); } } } }