void InitiateDeleteSelectedInAssetList(BuildInfo buildReportToDisplay, BuildReportTool.AssetList listToDeleteFrom) { if (listToDeleteFrom.IsNothingSelected) { return; } BuildReportTool.SizePart[] all = listToDeleteFrom.All; int numOfFilesRequestedToDelete = listToDeleteFrom.GetSelectedCount(); int numOfFilesToDelete = numOfFilesRequestedToDelete; int systemDeletionFileCount = 0; int brtFilesSelectedForDelete = 0; // filter out files that shouldn't be deleted // and identify unrecoverable files for (int n = 0, len = all.Length; n < len; ++n) { BuildReportTool.SizePart b = all[n]; bool isThisFileToBeDeleted = listToDeleteFrom.InSumSelection(b); if (isThisFileToBeDeleted) { if (BuildReportTool.Util.IsFileInBuildReportFolder(b.Name) && !BuildReportTool.Util.IsUselessFile(b.Name)) { //Debug.Log("BRT file? " + b.Name); --numOfFilesToDelete; ++brtFilesSelectedForDelete; } else if (BuildReportTool.Util.HaveToUseSystemForDelete(b.Name)) { ++systemDeletionFileCount; } } } if (numOfFilesToDelete <= 0) { if (brtFilesSelectedForDelete > 0) { EditorApplication.Beep(); EditorUtility.DisplayDialog("Can't delete!", "Take note that for safety, Build Report Tool assets themselves will not be included for deletion.", "OK"); } return; } // prepare warning message for user bool deletingSystemFilesOnly = (systemDeletionFileCount == numOfFilesToDelete); bool deleteIsRecoverable = !deletingSystemFilesOnly; string plural = ""; if (numOfFilesToDelete > 1) { plural = "s"; } string message; if (numOfFilesRequestedToDelete != numOfFilesToDelete) { message = "Among " + numOfFilesRequestedToDelete + " file" + plural + " requested to be deleted, only " + numOfFilesToDelete + " will be deleted."; } else { message = "This will delete " + numOfFilesToDelete + " asset" + plural + " in your project."; } // add warning about BRT files that are skipped if (brtFilesSelectedForDelete > 0) { message += "\n\nTake note that for safety, " + brtFilesSelectedForDelete + " file" + ((brtFilesSelectedForDelete > 1) ? "s" : "") + " found to be Build Report Tool assets are not included for deletion."; } // add warning about unrecoverable files if (systemDeletionFileCount > 0) { if (deletingSystemFilesOnly) { message += "\n\nThe deleted file" + plural + " will not be recoverable from the " + BuildReportTool.Util.NameOfOSTrashFolder + ", unless you have your own backup."; } else { message += "\n\nAmong the " + numOfFilesToDelete + " file" + plural + " for deletion, " + systemDeletionFileCount + " will not be recoverable from the " + BuildReportTool.Util.NameOfOSTrashFolder + ", unless you have your own backup."; } message += "\n\nThis is a limitation in Unity and .NET code. To ensure deleting will move the files to the " + BuildReportTool.Util.NameOfOSTrashFolder + " instead, delete your files the usual way using your project view."; } else { message += "\n\nThe deleted file" + plural + " can be recovered from your " + BuildReportTool.Util.NameOfOSTrashFolder + "."; } message += "\n\nDeleting a large number of files may take a long time as Unity will rebuild the project's Library folder.\n\nProceed with deleting?"; EditorApplication.Beep(); if (!EditorUtility.DisplayDialog("Delete?", message, "Yes", "No")) { return; } List <BuildReportTool.SizePart> allList = new List <BuildReportTool.SizePart>(all); List <BuildReportTool.SizePart> toRemove = new List <BuildReportTool.SizePart>(all.Length / 4); // finally, delete the files int deletedCount = 0; for (int n = 0, len = allList.Count; n < len; ++n) { BuildReportTool.SizePart b = allList[n]; bool okToDelete = BuildReportTool.Util.IsUselessFile(b.Name) || !BuildReportTool.Util.IsFileInBuildReportFolder(b.Name); if (listToDeleteFrom.InSumSelection(b) && okToDelete) { // delete this if (BuildReportTool.Util.ShowFileDeleteProgress(deletedCount, numOfFilesToDelete, b.Name, deleteIsRecoverable)) { return; } BuildReportTool.Util.DeleteSizePartFile(b); toRemove.Add(b); ++deletedCount; } } EditorUtility.ClearProgressBar(); // refresh the asset lists allList.RemoveAll(i => toRemove.Contains(i)); BuildReportTool.SizePart[] allWithRemoved = allList.ToArray(); // recreate per category list (maybe just remove from existing per category lists instead?) BuildReportTool.SizePart[][] perCategoryOfList = BuildReportTool.ReportGenerator.SegregateAssetSizesPerCategory(allWithRemoved, buildReportToDisplay.FileFilters); listToDeleteFrom.Reinit(allWithRemoved, perCategoryOfList, IsShowingUsedAssets ? BuildReportTool.Options.NumberOfTopLargestUsedAssetsToShow : BuildReportTool.Options.NumberOfTopLargestUnusedAssetsToShow); listToDeleteFrom.ClearSelection(); // print info about the delete operation to console string finalMessage = string.Format("{0} file{1} removed from your project.", deletedCount.ToString(), plural); if (deleteIsRecoverable) { finalMessage += " They can be recovered from your " + BuildReportTool.Util.NameOfOSTrashFolder + "."; } EditorApplication.Beep(); EditorUtility.DisplayDialog("Delete successful", finalMessage, "OK"); Debug.LogWarning(finalMessage); }
void DrawAssetList(Rect position, BuildReportTool.AssetList list, BuildReportTool.FileFilterGroup filter, int length) { if (list != null) { if (_searchResults != null && _searchResults.Length == 0) { DrawCentralMessage(position, "No search results"); return; } BuildReportTool.SizePart[] assetListToUse; var hasSearchResults = _searchResults != null; if (hasSearchResults && _searchResults.Length > 0) { assetListToUse = _searchResults; } else { 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 (!hasSearchResults && 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)) && !hasSearchResults) { list.ToggleSort(BuildReportTool.AssetList.SortType.AssetFullPath); } string sortTypeAssetFilenameStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_STYLE_NAME; if (!hasSearchResults && 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)) && !hasSearchResults) { 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"), !hasSearchResults, 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 ", !hasSearchResults, 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 ", !hasSearchResults, true, list, assetListToUse, (b) => { string text = b.Percentage + "%"; if (b.Percentage < 0) { text = Labels.NON_APPLICABLE_PERCENTAGE_LABEL; } return(text); }, ref _assetListScrollPos); } // -------------------------------------------------------------------------------------------------------- if (!hasSearchResults) { 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(); } } } }
bool DrawColumn(int sta, int end, BuildReportTool.AssetList.SortType columnType, string columnName, bool allowSort, bool showScrollbar, BuildReportTool.AssetList assetListCollection, BuildReportTool.SizePart[] assetList, ColumnDisplayDelegate dataToDisplay, ref Vector2 scollbarPos) { bool buttonPressed = false; GUILayout.BeginVertical(); // ---------------------------------------------------------- // column header string sortTypeStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_STYLE_NAME; if (allowSort && assetListCollection.CurrentSortType == columnType) { if (assetListCollection.CurrentSortOrder == BuildReportTool.AssetList.SortOrder.Descending) { sortTypeStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_DESC_STYLE_NAME; } else { sortTypeStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_ASC_STYLE_NAME; } } if (GUILayout.Button(columnName, sortTypeStyleName, GUILayout.Height(LIST_HEIGHT)) && allowSort) { buttonPressed = true; } // ---------------------------------------------------------- // scrollbar if (showScrollbar) { scollbarPos = GUILayout.BeginScrollView(scollbarPos, BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME, "verticalscrollbar"); } else { scollbarPos = GUILayout.BeginScrollView(scollbarPos, BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME, BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME); } // ---------------------------------------------------------- // actual contents bool useAlt = false; BuildReportTool.SizePart b; for (int n = sta; n < end; ++n) { b = assetList[n]; string styleToUse = useAlt ? BuildReportTool.Window.Settings.LIST_SMALL_ALT_STYLE_NAME : BuildReportTool.Window.Settings.LIST_SMALL_STYLE_NAME; if (assetListCollection.InSumSelection(b)) { styleToUse = BuildReportTool.Window.Settings.LIST_SMALL_SELECTED_NAME; } GUILayout.Label(dataToDisplay(b), styleToUse, GUILayout.MinWidth(90), GUILayout.Height(LIST_HEIGHT)); useAlt = !useAlt; } GUILayout.EndScrollView(); GUILayout.EndVertical(); return(buttonPressed); }
void DrawAssetList(Rect position, BuildReportTool.AssetList list, BuildReportTool.FileFilterGroup filter, int length) { if (list != null) { if (_searchResults != null && _searchResults.Length == 0) { DrawCentralMessage(position, "No search results"); return; } BuildReportTool.SizePart[] assetListToUse; var hasSearchResults = _searchResults != null; if (hasSearchResults && _searchResults.Length > 0) { assetListToUse = _searchResults; } else { 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 (!hasSearchResults && 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)) && !hasSearchResults) { list.ToggleSort(BuildReportTool.AssetList.SortType.AssetFullPath); } string sortTypeAssetFilenameStyleName = BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_STYLE_NAME; if (!hasSearchResults && 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)) && !hasSearchResults) { 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(); if (b.Name.StartsWith("Assets/")) { if (GUILayout.Button("Ping", GUILayout.Width(37))) { Utility.PingAssetInProject(b.Name); } } else { GUILayout.Space(37); } // 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(24); //GUILayout.EndHorizontal(); } styleObjToUse.normal.textColor = temp; styleObjToUse.padding.left = 2; if (GUILayout.Button(new GUIContent(prettyName, icon), styleObjToUse, GUILayout.Height(LIST_HEIGHT))) { if (Event.current.control) { if (!inSumSelect) { list.AddToSumSelection(b); _lastClickedEntryIdx = n; } else { list.ToggleSumSelection(b); _lastClickedEntryIdx = -1; } } else if (Event.current.shift) { if (_lastClickedEntryIdx != -1) { // select all from last clicked to here if (_lastClickedEntryIdx < n) { for (int addToSelectIdx = _lastClickedEntryIdx; addToSelectIdx <= n; ++addToSelectIdx) { list.AddToSumSelection(assetListToUse[addToSelectIdx]); } } else if (_lastClickedEntryIdx > n) { for (int addToSelectIdx = n; addToSelectIdx <= _lastClickedEntryIdx; ++addToSelectIdx) { list.AddToSumSelection(assetListToUse[addToSelectIdx]); } } } else { list.AddToSumSelection(b); } _lastClickedEntryIdx = n; } else { list.ClearSelection(); list.AddToSumSelection(b); _lastClickedEntryIdx = n; } } styleObjToUse.padding.right = origRight; styleObjToUse.padding.left = origLeft; GUILayout.EndHorizontal(); useAlt = !useAlt; } GUILayout.Space(SCROLLBAR_BOTTOM_PADDING); GUILayout.EndScrollView(); GUILayout.EndVertical(); bool pressedRawSizeSortBtn = false; bool pressedImpSizeSortBtn = false; bool pressedSizeBeforeBuildSortBtn = false; // -------------------------------------------------------------------------------------------------------- // column: raw file size if (IsShowingUsedAssets && (assetListToUse[0].SizeInAssetsFolderBytes != -1)) { pressedSizeBeforeBuildSortBtn = DrawColumn(viewOffset, len, BuildReportTool.AssetList.SortType.SizeBeforeBuild, "Size Before Build ", !hasSearchResults, false, list, assetListToUse, (b) => b.SizeInAssetsFolder, ref _assetListScrollPos); } if (IsShowingUsedAssets && BuildReportTool.Options.ShowImportedSizeForUsedAssets) { pressedRawSizeSortBtn = DrawColumn(viewOffset, len, BuildReportTool.AssetList.SortType.ImportedSizeOrRawSize, "Size In Build", !hasSearchResults, false, list, assetListToUse, (b) => { // assets in the "StreamingAssets" folder do not have an imported size // in those cases, the raw size is the same as the imported size // so just use the raw size if (b.ImportedSize == "N/A") { return(b.RawSize); } return(b.ImportedSize); }, ref _assetListScrollPos); } if (IsShowingUnusedAssets || (IsShowingUsedAssets && !BuildReportTool.Options.ShowImportedSizeForUsedAssets)) { pressedRawSizeSortBtn = DrawColumn(viewOffset, len, BuildReportTool.AssetList.SortType.RawSize, (IsShowingUnusedAssets ? "Raw Size" : "Size In Build"), !hasSearchResults, false, list, assetListToUse, (b) => b.RawSize, ref _assetListScrollPos); } bool showScrollbarForImportedSize = IsShowingUnusedAssets; // -------------------------------------------------------------------------------------------------------- // column: imported file size if (IsShowingUnusedAssets) { pressedImpSizeSortBtn = DrawColumn(viewOffset, len, BuildReportTool.AssetList.SortType.ImportedSize, "Imported Size ", !hasSearchResults, showScrollbarForImportedSize, list, assetListToUse, (b) => b.ImportedSize, ref _assetListScrollPos); } // -------------------------------------------------------------------------------------------------------- // column: percentage to total size bool pressedPercentSortBtn = false; if (IsShowingUsedAssets) { pressedPercentSortBtn = DrawColumn(viewOffset, len, BuildReportTool.AssetList.SortType.PercentSize, "Percent ", !hasSearchResults, true, list, assetListToUse, (b) => { string text = b.Percentage + "%"; if (b.Percentage < 0) { text = Labels.NON_APPLICABLE_PERCENTAGE_LABEL; } return(text); }, ref _assetListScrollPos); } // -------------------------------------------------------------------------------------------------------- if (!hasSearchResults) { if (pressedRawSizeSortBtn) { var sortType = BuildReportTool.AssetList.SortType.RawSize; if (IsShowingUsedAssets && BuildReportTool.Options.ShowImportedSizeForUsedAssets) { sortType = BuildReportTool.AssetList.SortType.ImportedSizeOrRawSize; } list.ToggleSort(sortType); } else if (pressedSizeBeforeBuildSortBtn) { list.ToggleSort(BuildReportTool.AssetList.SortType.SizeBeforeBuild); } else if (pressedImpSizeSortBtn) { list.ToggleSort(BuildReportTool.AssetList.SortType.ImportedSize); } else if (pressedPercentSortBtn) { list.ToggleSort(BuildReportTool.AssetList.SortType.PercentSize); } } GUILayout.EndHorizontal(); } } } }