コード例 #1
0
    public static void UpdateHoveredAsset(string hoveredAssetPath, Rect hoveredAssetRect, bool showingUsedAssets,
                                          BuildInfo buildReportToDisplay, AssetDependencies assetDependencies)
    {
        var alreadyUsingSameAssetPath =
            hoveredAssetPath.Equals(HoveredAssetEntryPath, StringComparison.OrdinalIgnoreCase);

        if (!alreadyUsingSameAssetPath)
        {
            HoveredAssetEntryPath = hoveredAssetPath;
        }

        // even if the new hovered asset to assign is the same as the current one,
        // its rect might have moved, so we always assign it
        HoveredAssetEntryRect = hoveredAssetRect;

        if (BuildReportTool.Options.ShowAssetPrimaryUsersInTooltipIfAvailable && !alreadyUsingSameAssetPath)
        {
            UpdateHoveredAssetType(hoveredAssetPath, showingUsedAssets);

            if (HoveredAssetIsASceneInBuild)
            {
                UpdateSceneInBuildLabel(SceneIsInBuildLabel,
                                        buildReportToDisplay.ScenesInBuild, HoveredAssetEntryPath);
            }

            AssignHoveredAssetEndUsers(assetDependencies);
        }
    }
コード例 #2
0
        public override void RefreshData(BuildInfo buildReport, AssetDependencies assetDependencies, TextureData textureData, UnityBuildReport unityBuildReport)
        {
            const string README_FILENAME = "README.txt";

            _readmeContents = BuildReportTool.Util.GetPackageFileContents(README_FILENAME);

            const string CHANGELOG_FILENAME = "VERSION.txt";

            _changelogContents = BuildReportTool.Util.GetPackageFileContents(CHANGELOG_FILENAME);


            if (_readmeContents.Length > LABEL_LENGTH)
            {
                _readmeContents = _readmeContents.Substring(0, LABEL_LENGTH);
            }

            if (_changelogContents.Length > LABEL_LENGTH)
            {
                _changelogContents = _changelogContents.Substring(0, LABEL_LENGTH);
            }

            if (_readmeGuiContent == null)
            {
                _readmeGuiContent = new GUIContent(_readmeContents);
            }

            if (_changelogGuiContent == null)
            {
                _changelogGuiContent = new GUIContent(_changelogContents);
            }
        }
コード例 #3
0
    public static void DrawThumbnailEndUsersTooltip(Rect position, AssetDependencies assetDependencies)
    {
        List <GUIContent> endUsersListToUse = GetEndUserLabelsFor(assetDependencies, HoveredAssetEntryPath);

        DrawThumbnailEndUsersTooltip(position, HoveredAssetEntryPath, GetAppropriateEndUserLabelForHovered(),
                                     endUsersListToUse, HoveredAssetEntryRect);
    }
コード例 #4
0
 public override void RefreshData(BuildInfo buildReport, AssetDependencies assetDependencies, TextureData textureData,
                                  UnityBuildReport unityBuildReport)
 {
     if (unityBuildReport != null)
     {
         SelectStep(-1, unityBuildReport.BuildProcessSteps);
     }
 }
コード例 #5
0
        public override void DrawGUI(Rect position,
                                     BuildInfo buildReportToDisplay, AssetDependencies assetDependencies, TextureData textureData,
                                     UnityBuildReport unityBuildReport,
                                     out bool requestRepaint
                                     )
        {
            if (buildReportToDisplay == null)
            {
                requestRepaint = false;
                return;
            }

            requestRepaint = false;

            if (Event.current.type == EventType.Layout)
            {
                _hasTotalBuildSize = !string.IsNullOrEmpty(buildReportToDisplay.TotalBuildSize) &&
                                     !string.IsNullOrEmpty(buildReportToDisplay.BuildFilePath);

                _hasUsedAssetsTotalSize = !string.IsNullOrEmpty(buildReportToDisplay.UsedTotalSize);
                _hasCompressedBuildSize = !string.IsNullOrEmpty(buildReportToDisplay.CompressedBuildSize);
                _hasBuildSizes          = buildReportToDisplay.BuildSizes != null;
                _hasMonoDLLsToDisplay   = buildReportToDisplay.MonoDLLs != null && buildReportToDisplay.MonoDLLs.Length > 0;

                _hasUnityEngineDLLsToDisplay = buildReportToDisplay.UnityEngineDLLs != null &&
                                               buildReportToDisplay.UnityEngineDLLs.Length > 0;

                _hasScriptDLLsToDisplay =
                    buildReportToDisplay.ScriptDLLs != null && buildReportToDisplay.ScriptDLLs.Length > 0;
            }


            GUILayout.Space(2);             // top padding for scrollbar

            _assetListScrollPos = GUILayout.BeginScrollView(_assetListScrollPos);

            GUILayout.Space(10);             // top padding for content

            GUILayout.BeginHorizontal();
            GUILayout.Space(10);             // extra left padding

            DrawTotalSize(buildReportToDisplay);

            GUILayout.Space(BuildReportTool.Window.Settings.CATEGORY_HORIZONTAL_SPACING);
            GUILayout.BeginVertical();

            DrawBuildSizes(buildReportToDisplay);

            GUILayout.Space(BuildReportTool.Window.Settings.CATEGORY_VERTICAL_SPACING);

            DrawDLLList(buildReportToDisplay);

            GUILayout.EndVertical();
            GUILayout.Space(20);             // extra right padding
            GUILayout.EndHorizontal();

            GUILayout.EndScrollView();
        }
コード例 #6
0
    public static bool ShouldHoveredAssetShowEndUserTooltip(AssetDependencies assetDependencies)
    {
        if (_hoveredAssetType != AssetInfoType.None)
        {
            return(true);
        }

        List <GUIContent> endUsersListToUse = GetEndUserLabelsFor(assetDependencies, HoveredAssetEntryPath);

        return(endUsersListToUse != null && endUsersListToUse.Count > 0);
    }
コード例 #7
0
        public override void DrawGUI(Rect position,
                                     BuildInfo buildReportToDisplay, AssetDependencies assetDependencies, TextureData textureData,
                                     UnityBuildReport unityBuildReport,
                                     out bool requestRepaint
                                     )
        {
            requestRepaint = false;

            GUI.SetNextControlName("BRT_HelpUnfocuser");
            GUI.TextField(new Rect(-100, -100, 10, 10), "");

            GUILayout.Space(10);             // extra top padding

            GUILayout.BeginHorizontal();
            int newSelectedHelpIdx = GUILayout.SelectionGrid(_selectedHelpContentsIdx, _helpTypeLabels, 1);

            if (newSelectedHelpIdx != _selectedHelpContentsIdx)
            {
                GUI.FocusControl("BRT_HelpUnfocuser");
            }

            _selectedHelpContentsIdx = newSelectedHelpIdx;

            //GUILayout.Space((position.width - HELP_CONTENT_WIDTH) * 0.5f);

            if (_selectedHelpContentsIdx == HELP_TYPE_README_IDX)
            {
                _readmeScrollPos = GUILayout.BeginScrollView(
                    _readmeScrollPos);

                float readmeHeight = GUI.skin.GetStyle(HELP_CONTENT_GUI_STYLE)
                                     .CalcHeight(_readmeGuiContent, HELP_CONTENT_WIDTH);

                EditorGUILayout.SelectableLabel(_readmeContents, HELP_CONTENT_GUI_STYLE,
                                                GUILayout.Width(HELP_CONTENT_WIDTH), GUILayout.Height(readmeHeight));

                GUILayout.EndScrollView();
            }
            else if (_selectedHelpContentsIdx == HELP_TYPE_CHANGELOG_IDX)
            {
                _changelogScrollPos = GUILayout.BeginScrollView(
                    _changelogScrollPos);

                float changelogHeight = GUI.skin.GetStyle(HELP_CONTENT_GUI_STYLE)
                                        .CalcHeight(_changelogGuiContent, HELP_CONTENT_WIDTH);

                EditorGUILayout.SelectableLabel(_changelogContents, HELP_CONTENT_GUI_STYLE,
                                                GUILayout.Width(HELP_CONTENT_WIDTH), GUILayout.Height(changelogHeight));

                GUILayout.EndScrollView();
            }

            GUILayout.EndHorizontal();
        }
コード例 #8
0
    static List <GUIContent> GetEndUserLabelsFor(AssetDependencies assetDependencies, string assetPath)
    {
        if (string.IsNullOrEmpty(assetPath))
        {
            return(null);
        }

        List <GUIContent> endUsersListToUse = null;

        var dependencies = assetDependencies.GetAssetDependencies();

        if (dependencies.ContainsKey(assetPath))
        {
            var entry = dependencies[assetPath];
            if (entry != null)
            {
                endUsersListToUse = entry.GetEndUserLabels();
            }
        }

        return(endUsersListToUse);
    }
コード例 #9
0
ファイル: BRT_OverviewScreen.cs プロジェクト: avi9111/x
        void DrawAssetList(BuildReportTool.AssetList assetList, bool usedAssets, BuildInfo buildReportToDisplay,
                           AssetDependencies assetDependencies)
        {
            if (assetList == null || assetList.TopLargest == null)
            {
                //Debug.LogError("no top ten largest");
                return;
            }

            BuildReportTool.SizePart[] assetsToShow = assetList.TopLargest;

            if (assetsToShow == null)
            {
                //Debug.LogError("no top ten largest");
                return;
            }

            bool useAlt = true;

            var newEntryHoveredIdx = -1;

            BuildReportTool.SizePart newEntryHovered = null;
            Rect newEntryHoveredRect = new Rect();
            Rect iconRect            = new Rect();
            var  hoveringOverIcon    = false;

            //var hoveringOverLabel = false;

            GUILayout.BeginHorizontal();

            // 1st column: name
            GUILayout.BeginVertical();
            for (int n = 0; n < assetsToShow.Length; ++n)
            {
                BuildReportTool.SizePart b = assetsToShow[n];

                string styleToUse = useAlt
                                                            ? BuildReportTool.Window.Settings.LIST_NORMAL_ALT_STYLE_NAME
                                                            : BuildReportTool.Window.Settings.LIST_NORMAL_STYLE_NAME;
                string iconStyleToUse = useAlt
                                                                ? BuildReportTool.Window.Settings.LIST_ICON_ALT_STYLE_NAME
                                                                : BuildReportTool.Window.Settings.LIST_ICON_STYLE_NAME;

                Texture icon = AssetDatabase.GetCachedIcon(b.Name);

                GUILayout.BeginHorizontal();
                if (icon == null)
                {
                    // no icon, just add space so it aligns with the other entries
                    GUILayout.Label(string.Empty, iconStyleToUse, GUILayout.Width(28), GUILayout.Height(30));
                }
                else
                {
                    GUILayout.Button(icon, iconStyleToUse, GUILayout.Width(28), GUILayout.Height(30));
                }

                if (Event.current.type == EventType.Repaint)
                {
                    iconRect = GUILayoutUtility.GetLastRect();

                    // if mouse is hovering over asset entry's icon (not the label)
                    // draw a border on the asset icon
                    if (iconRect.Contains(Event.current.mousePosition))
                    {
                        hoveringOverIcon    = true;
                        newEntryHoveredIdx  = n;
                        newEntryHovered     = b;
                        newEntryHoveredRect = iconRect;

                        GUI.Box(iconRect, icon, "IconHovered");
                    }
                }

                string prettyName = string.Format(" {0}. {1}", (n + 1).ToString(), BuildReportTool.Util.GetAssetFilename(b.Name));
                if (GUILayout.Button(prettyName, styleToUse, GUILayout.MinWidth(100), GUILayout.MaxWidth(400),
                                     GUILayout.Height(30)))
                {
                    Utility.PingAssetInProject(b.Name);
                }

                if (newEntryHoveredIdx == -1 && Event.current.type == EventType.Repaint)
                {
                    var labelRect = GUILayoutUtility.GetLastRect();

                    // if mouse is hovering over asset entry's label
                    // draw a border on the asset icon
                    if (labelRect.Contains(Event.current.mousePosition))
                    {
                        //hoveringOverLabel = true;
                        newEntryHoveredIdx  = n;
                        newEntryHovered     = b;
                        newEntryHoveredRect = labelRect;

                        GUI.Box(iconRect, icon, "IconHovered");
                    }
                }

                GUILayout.EndHorizontal();

                useAlt = !useAlt;
            }

            GUILayout.EndVertical();


            if (Event.current.type == EventType.Repaint)
            {
                if (usedAssets)
                {
                    _assetUsedEntryHoveredIdx = newEntryHoveredIdx;
                }
                else
                {
                    _assetUnusedEntryHoveredIdx = newEntryHoveredIdx;
                }

                if (newEntryHoveredIdx != -1)
                {
                    string hoveredAssetPath = newEntryHovered != null ? newEntryHovered.Name : null;

                    // ----------------
                    // update what is considered the hovered asset, for use later on
                    // when the tooltip will be drawn
                    BRT_BuildReportWindow.UpdateHoveredAsset(hoveredAssetPath, newEntryHoveredRect,
                                                             usedAssets, buildReportToDisplay, assetDependencies);

                    // ----------------
                    // if mouse is hovering over the correct area, we signify that
                    // the tooltip thumbnail should be drawn
                    if (BuildReportTool.Options.ShowTooltipThumbnail &&
                        (BuildReportTool.Options.ShowThumbnailOnHoverLabelToo || hoveringOverIcon) &&
                        BRT_BuildReportWindow.GetAssetPreview(hoveredAssetPath) != null)
                    {
                        _shouldShowThumbnailOnHoveredAsset = true;
                    }
                    else
                    {
                        _shouldShowThumbnailOnHoveredAsset = false;
                    }
                }
            }

            // 2nd column: size

            var useRawSize = (usedAssets && !BuildReportTool.Options.ShowImportedSizeForUsedAssets) || !usedAssets;

            useAlt = true;
            GUILayout.BeginVertical();
            for (int n = 0; n < assetsToShow.Length; ++n)
            {
                BuildReportTool.SizePart b = assetsToShow[n];

                string styleToUse = useAlt
                                                            ? BuildReportTool.Window.Settings.LIST_NORMAL_ALT_STYLE_NAME
                                                            : BuildReportTool.Window.Settings.LIST_NORMAL_STYLE_NAME;

                GUILayout.Label(useRawSize ? b.RawSize : b.ImportedSize, styleToUse, GUILayout.MaxWidth(100),
                                GUILayout.Height(30));

                useAlt = !useAlt;
            }

            GUILayout.EndVertical();
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
        }
コード例 #10
0
ファイル: BRT_OverviewScreen.cs プロジェクト: avi9111/x
        public override void DrawGUI(Rect position,
                                     BuildInfo buildReportToDisplay, AssetDependencies assetDependencies, TextureData textureData,
                                     UnityBuildReport unityBuildReport,
                                     out bool requestRepaint
                                     )
        {
            if (buildReportToDisplay == null)
            {
                requestRepaint = false;
                return;
            }

            GUILayout.Space(2);             // top padding for scrollbar

            _scrollPos = GUILayout.BeginScrollView(_scrollPos);

            GUILayout.BeginHorizontal();
            GUILayout.Space(10);             // extra left padding


            GUILayout.BeginVertical();

            GUILayout.Space(10);             // top padding


            // report title
            GUILayout.Label(buildReportToDisplay.SuitableTitle, BuildReportTool.Window.Settings.MAIN_TITLE_STYLE_NAME);


            GUILayout.Space(10);


            // two-column layout
            GUILayout.BeginVertical();

            GUILayout.BeginHorizontal();
            // 1st column
            GUILayout.BeginVertical(GUILayout.MaxWidth(350));
            GUILayout.Label(Labels.TIME_OF_BUILD_LABEL, BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);
            GUILayout.Label(buildReportToDisplay.GetTimeReadable(),
                            BuildReportTool.Window.Settings.INFO_SUBTITLE_STYLE_NAME);

            GUILayout.Label("Project building took:", BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);
            GUILayout.Label("How long the project building took. This is the time between OnPreprocessBuild and OnPostprocessBuild.",
                            BuildReportTool.Window.Settings.TINY_HELP_STYLE_NAME);
            GUILayout.Label(buildReportToDisplay.BuildDurationTime.ToString(),
                            BuildReportTool.Window.Settings.INFO_SUBTITLE_STYLE_NAME);

            GUILayout.Label("Report generation took:", BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);
            GUILayout.Label("How long the Build Report Generation took.",
                            BuildReportTool.Window.Settings.TINY_HELP_STYLE_NAME);
            GUILayout.Label(buildReportToDisplay.ReportGenerationTime.ToString(),
                            BuildReportTool.Window.Settings.INFO_SUBTITLE_STYLE_NAME);

            if (!string.IsNullOrEmpty(buildReportToDisplay.TotalBuildSize) &&
                !string.IsNullOrEmpty(buildReportToDisplay.BuildFilePath))
            {
                GUILayout.BeginVertical();
                GUILayout.Label(Labels.BUILD_TOTAL_SIZE_LABEL, BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);

                GUILayout.Label(BuildReportTool.Util.GetBuildSizePathDescription(buildReportToDisplay),
                                BuildReportTool.Window.Settings.TINY_HELP_STYLE_NAME);

                GUILayout.Label(buildReportToDisplay.TotalBuildSize, BuildReportTool.Window.Settings.BIG_NUMBER_STYLE_NAME);
                GUILayout.EndVertical();
            }

            GUILayout.Space(20);

            string emphasisColor = "black";

            if (EditorGUIUtility.isProSkin || BRT_BuildReportWindow.FORCE_USE_DARK_SKIN)
            {
                emphasisColor = "white";
            }

            string largestAssetCategoryLabel = string.Format(
                "<color={0}><size=20><b>{1}</b></size></color> are the largest,\ntaking up <color={0}><size=20><b>{2}%</b></size></color> of the build{3}",
                emphasisColor, buildReportToDisplay.BuildSizes[0].Name,
                buildReportToDisplay.BuildSizes[0].Percentage.ToString(CultureInfo.InvariantCulture),
                (!buildReportToDisplay.HasStreamingAssets
                                         ? "\n<size=12>(not counting streaming assets)</size>"
                                         : ""));

            GUILayout.Label(largestAssetCategoryLabel, BuildReportTool.Window.Settings.INFO_TEXT_STYLE_NAME);
            GUILayout.Space(20);
            GUILayout.EndVertical();

            // 2nd column
            GUILayout.BeginVertical(GUILayout.MaxWidth(250));
            GUILayout.Label("Made for:", BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);
            GUILayout.Label(buildReportToDisplay.BuildType, BuildReportTool.Window.Settings.INFO_SUBTITLE_STYLE_NAME);

            GUILayout.Label("Built in:", BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);
            GUILayout.Label(buildReportToDisplay.UnityVersionDisplayed,
                            BuildReportTool.Window.Settings.INFO_SUBTITLE_STYLE_NAME);
            GUILayout.EndVertical();

            DrawScenesInBuild(buildReportToDisplay.ScenesInBuild);

            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();

            var numberOfTopUsed =
                buildReportToDisplay.HasUsedAssets ? buildReportToDisplay.UsedAssets.NumberOfTopLargest : 0;
            var numberOfTopUnused = buildReportToDisplay.HasUnusedAssets
                                                        ? buildReportToDisplay.UnusedAssets.NumberOfTopLargest
                                                        : 0;

            if (Event.current.type == EventType.Layout)
            {
                _showTopUsed   = numberOfTopUsed > 0 && buildReportToDisplay.UsedAssets.TopLargest != null;
                _showTopUnused = numberOfTopUnused > 0 && buildReportToDisplay.UnusedAssets.TopLargest != null;
            }

            // 1st column
            GUILayout.BeginVertical();
            if (_showTopUsed)
            {
                GUILayout.Label(string.Format("Top {0} largest in build:", numberOfTopUsed.ToString()),
                                BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);

                if (!BuildReportTool.Options.AutoResortAssetsWhenUnityEditorRegainsFocus &&
                    GUILayout.Button("Refresh", GUILayout.Height(20), GUILayout.MaxWidth(520)))
                {
                    buildReportToDisplay.RecategorizeUsedAssets();
                    buildReportToDisplay.FlagOkToRefresh();
                }

                DrawAssetList(buildReportToDisplay.UsedAssets, true, buildReportToDisplay, assetDependencies);
            }

            GUILayout.EndVertical();

            GUILayout.Space(50);

            // 2nd column
            GUILayout.BeginVertical();
            if (_showTopUnused)
            {
                GUILayout.Label(string.Format("Top {0} largest not in build:", numberOfTopUnused.ToString()),
                                BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);

                if (!BuildReportTool.Options.AutoResortAssetsWhenUnityEditorRegainsFocus &&
                    GUILayout.Button("Refresh", GUILayout.Height(20), GUILayout.MaxWidth(520)))
                {
                    buildReportToDisplay.RecategorizeUnusedAssets();
                    buildReportToDisplay.FlagOkToRefresh();
                }

                DrawAssetList(buildReportToDisplay.UnusedAssets, false, buildReportToDisplay, assetDependencies);
            }

            GUILayout.EndVertical();
            GUILayout.EndHorizontal();

            GUILayout.EndVertical();


            GUILayout.Space(20);

            if (assetDependencies != null && !string.IsNullOrEmpty(assetDependencies.SavedPath))
            {
                GUILayout.Label("Asset Dependencies file used:",
                                BuildReportTool.Window.Settings.SETTING_NAME_STYLE_NAME);
                GUILayout.Label(assetDependencies.SavedPath,
                                BuildReportTool.Window.Settings.SETTING_VALUE_STYLE_NAME);

                GUILayout.Space(10);
            }

            if (textureData != null && !string.IsNullOrEmpty(textureData.SavedPath))
            {
                GUILayout.Label("Texture Data file used:",
                                BuildReportTool.Window.Settings.SETTING_NAME_STYLE_NAME);
                GUILayout.Label(textureData.SavedPath,
                                BuildReportTool.Window.Settings.SETTING_VALUE_STYLE_NAME);

                GUILayout.Space(10);
            }

            if (unityBuildReport != null && !string.IsNullOrEmpty(unityBuildReport.SavedPath))
            {
                GUILayout.Label("Additional Unity Build Report file used:",
                                BuildReportTool.Window.Settings.SETTING_NAME_STYLE_NAME);
                GUILayout.Label(unityBuildReport.SavedPath,
                                BuildReportTool.Window.Settings.SETTING_VALUE_STYLE_NAME);

                GUILayout.Space(10);
            }

            GUILayout.Space(20);

            GUILayout.EndVertical();

            GUILayout.Space(20);             // extra right padding
            GUILayout.EndHorizontal();

            GUILayout.EndScrollView();

            // ------------------------------------------------------

            // Continually request repaint, since we need to check the rects
            // generated by the GUILayout (using GUILayoutUtility.GetLastRect())
            // to make the hover checks work. That's because GetLastRect() only
            // works during repaint event.
            //
            // Later checks below can set requestRepaint to false if there's no
            // need to repaint, to help lessen cpu usage.
            requestRepaint = true;

            if (Event.current.mousePosition.y >= position.height ||
                Event.current.mousePosition.y <= 0 ||
                Event.current.mousePosition.x <= 0 ||
                Event.current.mousePosition.x >= position.width)
            {
                // mouse is outside the window, no need to repaint, can't show tooltip anyway
                // set requestRepaint to false to help lessen cpu usage
                requestRepaint = false;
            }

            var showThumbnailNow = BuildReportTool.Options.ShowTooltipThumbnail &&
                                   _shouldShowThumbnailOnHoveredAsset &&
                                   (_assetUsedEntryHoveredIdx != -1 || _assetUnusedEntryHoveredIdx != -1);

            var zoomInChanged = false;

            if (showThumbnailNow)
            {
                var prevZoomedIn = BRT_BuildReportWindow.ZoomedInThumbnails;

                // if thumbnail is currently showing, we process the inputs
                // (ctrl zooms in on thumbnail, alt toggles alpha blend)
                BRT_BuildReportWindow.ProcessThumbnailControls();

                if (prevZoomedIn != BRT_BuildReportWindow.ZoomedInThumbnails)
                {
                    zoomInChanged = true;
                }
            }
            else
            {
                // no thumbnail currently shown. ensure the controls that
                // need to be reset to initial state are reset
                BRT_BuildReportWindow.ResetThumbnailControls();
            }

            if (!zoomInChanged && !Event.current.alt &&
                !BRT_BuildReportWindow.MouseMovedNow && !BRT_BuildReportWindow.LastMouseMoved)
            {
                // mouse hasn't moved, and no request to zoom-in thumbnail or toggle thumbnail alpha
                // no need to repaint because nothing has changed
                // set requestRepaint to false to help lessen cpu usage
                requestRepaint = false;
            }

            var shouldShowAssetEndUsersTooltipNow = BuildReportTool.Options.ShowAssetPrimaryUsersInTooltipIfAvailable &&
                                                    BRT_BuildReportWindow.ShouldHoveredAssetShowEndUserTooltip(
                assetDependencies) &&
                                                    (_assetUsedEntryHoveredIdx != -1 || _assetUnusedEntryHoveredIdx != -1);

            if (Event.current.type == EventType.Repaint)
            {
                if (showThumbnailNow && shouldShowAssetEndUsersTooltipNow)
                {
                    // draw thumbnail and end users below it
                    BRT_BuildReportWindow.DrawThumbnailEndUsersTooltip(position, assetDependencies, textureData);
                }
                else if (shouldShowAssetEndUsersTooltipNow)
                {
                    // draw only end users in tooltip
                    BRT_BuildReportWindow.DrawEndUsersTooltip(position, assetDependencies);
                }
                else if (showThumbnailNow)
                {
                    // draw only thumbnail in tooltip
                    BRT_BuildReportWindow.DrawThumbnailTooltip(position, textureData);
                }
            }
        }
コード例 #11
0
ファイル: BRT_OverviewScreen.cs プロジェクト: avi9111/x
 public override void RefreshData(BuildInfo buildReport, AssetDependencies assetDependencies, TextureData textureData, UnityBuildReport unityBuildReport)
 {
 }
コード例 #12
0
        // ================================================================================================

        public override void DrawGUI(Rect position, BuildInfo buildReportToDisplay, AssetDependencies assetDependencies,
                                     TextureData textureData, UnityBuildReport unityBuildReport, out bool requestRepaint)
        {
            requestRepaint = false;
            if (unityBuildReport == null)
            {
                return;
            }

            if (_logIcon == null)
            {
                var logIcons = GUI.skin.FindStyle("LogMessageIcons");
                if (logIcons != null)
                {
                    _logIcon   = logIcons.normal.background;
                    _warnIcon  = logIcons.hover.background;
                    _errorIcon = logIcons.active.background;

                    _logFilterLabel.image   = _logIcon;
                    _warnFilterLabel.image  = _warnIcon;
                    _errorFilterLabel.image = _errorIcon;
                }
            }

            if (_indentLine == null)
            {
                _indentLine = GUI.skin.GetStyle("IndentStyle1").normal.background;
            }
            Texture2D prevArrow = GUI.skin.GetStyle(BuildReportTool.Window.Settings.BIG_LEFT_ARROW_ICON_STYLE_NAME).normal.background;
            Texture2D nextArrow = GUI.skin.GetStyle(BuildReportTool.Window.Settings.BIG_RIGHT_ARROW_ICON_STYLE_NAME).normal.background;

            var steps = unityBuildReport.BuildProcessSteps;

            if (steps == null)
            {
                return;
            }

            // --------------------------------

            #region Steps
            float height    = position.height * _buildStepsHeightPercent;
            var   maxHeight = (steps.Length + 1) * 20;
            if (height > maxHeight)
            {
                height = maxHeight;
            }
            GUILayout.BeginHorizontal(GUILayout.Height(height));

            #region Column 1 (Step Name)
            GUILayout.BeginVertical(BRT_BuildReportWindow.LayoutNone);
            GUILayout.Label("Step", BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_STYLE_NAME);
            _scrollPos = GUILayout.BeginScrollView(_scrollPos,
                                                   BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME,
                                                   BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME, BRT_BuildReportWindow.LayoutNone);

            bool useAlt = true;
            for (int i = 0; i < steps.Length; ++i)
            {
                string styleToUse = useAlt
                                                            ? BuildReportTool.Window.Settings.LIST_SMALL_ALT_STYLE_NAME
                                                            : BuildReportTool.Window.Settings.LIST_SMALL_STYLE_NAME;
                if (i == _selectedStepIdx)
                {
                    styleToUse = BuildReportTool.Window.Settings.LIST_SMALL_SELECTED_NAME;
                }

                GUILayout.BeginHorizontal(styleToUse);
                GUILayout.Space(steps[i].Depth * 20);
                if (GUILayout.Button(steps[i].Name, styleToUse, BRT_BuildReportWindow.LayoutListHeight))
                {
                    SelectStep(i, steps);
                }
                GUILayout.EndHorizontal();
                if (Event.current.type == EventType.Repaint)
                {
                    Rect labelRect = GUILayoutUtility.GetLastRect();

                    var prevColor = GUI.color;
                    GUI.color = new Color(0, 0, 0, 0.5f);
                    for (int indentN = 0, indentLen = steps[i].Depth;
                         indentN < indentLen;
                         ++indentN)
                    {
                        var indentRect = new Rect((indentN * 20), labelRect.y, 20, labelRect.height);
                        GUI.DrawTexture(indentRect, _indentLine, ScaleMode.ScaleAndCrop);
                    }

                    GUI.color = prevColor;
                }

                useAlt = !useAlt;
            }

            GUILayout.EndScrollView();
            GUILayout.EndVertical();
            #endregion

            #region Column 2 (Warning Count)
            GUILayout.BeginVertical(BRT_BuildReportWindow.LayoutNone);
            GUILayout.Label("Warning Count", BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_STYLE_NAME);
            _scrollPos = GUILayout.BeginScrollView(_scrollPos,
                                                   BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME,
                                                   BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME, BRT_BuildReportWindow.LayoutNone);
            useAlt = true;
            for (int i = 0; i < steps.Length; ++i)
            {
                string styleToUse = useAlt
                                                            ? BuildReportTool.Window.Settings.LIST_SMALL_ALT_STYLE_NAME
                                                            : BuildReportTool.Window.Settings.LIST_SMALL_STYLE_NAME;
                if (i == _selectedStepIdx)
                {
                    styleToUse = BuildReportTool.Window.Settings.LIST_SMALL_SELECTED_NAME;
                }

                if (steps[i].WarnLogCount > 0)
                {
                    if (GUILayout.Button(steps[i].WarnLogCount.ToString(), styleToUse, BRT_BuildReportWindow.LayoutListHeight))
                    {
                        SelectStep(i, steps);
                    }
                }
                else
                {
                    GUILayout.Label(GUIContent.none, styleToUse, BRT_BuildReportWindow.LayoutListHeight);
                }
                useAlt = !useAlt;
            }
            GUILayout.EndScrollView();
            GUILayout.EndVertical();
            #endregion

            #region Column 3 (Error Count)
            GUILayout.BeginVertical(BRT_BuildReportWindow.LayoutNone);
            GUILayout.Label("Error Count", BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_STYLE_NAME);
            _scrollPos = GUILayout.BeginScrollView(_scrollPos,
                                                   BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME,
                                                   BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME, BRT_BuildReportWindow.LayoutNone);
            useAlt = true;
            for (int i = 0; i < steps.Length; ++i)
            {
                string styleToUse = useAlt
                                                            ? BuildReportTool.Window.Settings.LIST_SMALL_ALT_STYLE_NAME
                                                            : BuildReportTool.Window.Settings.LIST_SMALL_STYLE_NAME;
                if (i == _selectedStepIdx)
                {
                    styleToUse = BuildReportTool.Window.Settings.LIST_SMALL_SELECTED_NAME;
                }

                if (steps[i].ErrorLogCount > 0)
                {
                    if (GUILayout.Button(steps[i].ErrorLogCount.ToString(), styleToUse, BRT_BuildReportWindow.LayoutListHeight))
                    {
                        SelectStep(i, steps);
                    }
                }
                else
                {
                    GUILayout.Label(GUIContent.none, styleToUse, BRT_BuildReportWindow.LayoutListHeight);
                }
                useAlt = !useAlt;
            }
            GUILayout.EndScrollView();
            GUILayout.EndVertical();
            #endregion

            #region Last Column (Duration)
            GUILayout.BeginVertical(BRT_BuildReportWindow.LayoutNone);
            GUILayout.Label("Duration", BuildReportTool.Window.Settings.LIST_COLUMN_HEADER_STYLE_NAME);
            _scrollPos = GUILayout.BeginScrollView(_scrollPos,
                                                   BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME,
                                                   "verticalscrollbar", BRT_BuildReportWindow.LayoutNone);


            useAlt = true;
            for (int i = 0; i < steps.Length; ++i)
            {
                string styleToUse = useAlt
                                                            ? BuildReportTool.Window.Settings.LIST_SMALL_ALT_STYLE_NAME
                                                            : BuildReportTool.Window.Settings.LIST_SMALL_STYLE_NAME;
                if (i == _selectedStepIdx)
                {
                    styleToUse = BuildReportTool.Window.Settings.LIST_SMALL_SELECTED_NAME;
                }

                string duration;
                if (i == 0)
                {
                    duration = unityBuildReport.TotalBuildTime.ToReadableString();
                }
                else
                {
                    duration = steps[i].Duration.ToReadableString();
                }

                GUILayout.Label(duration, styleToUse, BRT_BuildReportWindow.LayoutListHeight);

                useAlt = !useAlt;
            }

            GUILayout.EndScrollView();
            GUILayout.EndVertical();
            #endregion

            GUILayout.EndHorizontal();
            if (Event.current.type == EventType.Repaint)
            {
                _stepsViewRect = GUILayoutUtility.GetLastRect();
            }
            #endregion

            // --------------------------------

            #region Logs
            GUILayout.BeginHorizontal();

            GUILayout.BeginVertical(BRT_BuildReportWindow.LayoutNone);

            #region Logs Toolbar
            GUILayout.BeginHorizontal(BuildReportTool.Window.Settings.TOP_BAR_BG_STYLE_NAME, BRT_BuildReportWindow.LayoutHeight18);
            GUILayout.Space(10);
            string logMessagesTitle;
            bool   hasStepSelected = _selectedStepIdx != -1 &&
                                     steps[_selectedStepIdx].BuildLogMessages != null &&
                                     steps[_selectedStepIdx].BuildLogMessages.Length > 0;
            if (hasStepSelected)
            {
                logMessagesTitle = string.Format("Log Messages of: <i>{0}</i>", steps[_selectedStepIdx].Name);
            }
            else
            {
                logMessagesTitle = "Log Messages (Total)";
            }
            GUILayout.Label(logMessagesTitle, BuildReportTool.Window.Settings.TOP_BAR_LABEL_STYLE_NAME, BRT_BuildReportWindow.LayoutNoExpandWidth);
            if (Event.current.type == EventType.Repaint)
            {
                _dividerRect = GUILayoutUtility.GetLastRect();
            }
            GUILayout.FlexibleSpace();

            int messagePaginationLength = BuildReportTool.Options.LogMessagePaginationLength;

            if (GUILayout.Button(prevArrow, BuildReportTool.Window.Settings.TOP_BAR_BTN_STYLE_NAME,
                                 BRT_BuildReportWindow.LayoutNone) &&
                (_logMessageToShowStartOffset - messagePaginationLength >= 0))
            {
                _logMessageToShowStartOffset -= messagePaginationLength;
            }
            if (Event.current.type == EventType.Repaint)
            {
                var prevArrowRect = GUILayoutUtility.GetLastRect();
                _dividerRect.xMax = prevArrowRect.x;
            }

            string paginateLabel;
            if (_showPageNumbers)
            {
                int totalPageNumbers = _totalVisibleMessageCount / messagePaginationLength;
                if (_totalVisibleMessageCount % messagePaginationLength > 0)
                {
                    ++totalPageNumbers;
                }

                // the max number of digits for the displayed offset counters
                string assetCountDigitNumFormat = string.Format("D{0}", totalPageNumbers.ToString().Length.ToString());

                paginateLabel = string.Format("Page {0} of {1}",
                                              ((_logMessageToShowStartOffset / messagePaginationLength) + 1).ToString(assetCountDigitNumFormat),
                                              totalPageNumbers.ToString());
            }
            else
            {
                // number of assets in current page
                int pageLength = Mathf.Min(_logMessageToShowStartOffset + messagePaginationLength, _totalVisibleMessageCount);

                int offsetNonZeroBased = _logMessageToShowStartOffset + (pageLength > 0 ? 1 : 0);

                // the max number of digits for the displayed offset counters
                string assetCountDigitNumFormat = string.Format("D{0}", _totalVisibleMessageCount.ToString().Length.ToString());

                paginateLabel = string.Format("Page {0} - {1} of {2}",
                                              offsetNonZeroBased.ToString(assetCountDigitNumFormat),
                                              pageLength.ToString(assetCountDigitNumFormat),
                                              _totalVisibleMessageCount.ToString(assetCountDigitNumFormat));
            }

            if (GUILayout.Button(paginateLabel, BuildReportTool.Window.Settings.TOP_BAR_LABEL_STYLE_NAME,
                                 BRT_BuildReportWindow.LayoutNone))
            {
                _showPageNumbers = !_showPageNumbers;
            }

            if (GUILayout.Button(nextArrow, BuildReportTool.Window.Settings.TOP_BAR_BTN_STYLE_NAME,
                                 BRT_BuildReportWindow.LayoutNone) &&
                (_logMessageToShowStartOffset + messagePaginationLength < _totalVisibleMessageCount))
            {
                _logMessageToShowStartOffset += messagePaginationLength;
            }

            GUILayout.Space(8);

            var newShowLogMessagesCollapsed = GUILayout.Toggle(_showLogMessagesCollapsed, "Collapse",
                                                               BuildReportTool.Window.Settings.TOP_BAR_BTN_STYLE_NAME, BRT_BuildReportWindow.LayoutNoExpandWidth);
            if (newShowLogMessagesCollapsed != _showLogMessagesCollapsed)
            {
                _showLogMessagesCollapsed = newShowLogMessagesCollapsed;
                RefreshTotalVisibleMessageCount();
            }
            GUILayout.Space(8);
            bool newShowLogMessages = GUILayout.Toggle(_showLogMessages, _logFilterLabel,
                                                       BuildReportTool.Window.Settings.TOP_BAR_BTN_STYLE_NAME, BRT_BuildReportWindow.LayoutNoExpandWidth);
            bool newShowWarnMessages = GUILayout.Toggle(_showWarnMessages, _warnFilterLabel,
                                                        BuildReportTool.Window.Settings.TOP_BAR_BTN_STYLE_NAME, BRT_BuildReportWindow.LayoutNoExpandWidth);
            bool newShowErrorMessages = GUILayout.Toggle(_showErrorMessages, _errorFilterLabel,
                                                         BuildReportTool.Window.Settings.TOP_BAR_BTN_STYLE_NAME, BRT_BuildReportWindow.LayoutNoExpandWidth);
            if (newShowLogMessages != _showLogMessages)
            {
                _showLogMessages = newShowLogMessages;
                RefreshTotalVisibleMessageCount();
            }
            if (newShowWarnMessages != _showWarnMessages)
            {
                _showWarnMessages = newShowWarnMessages;
                RefreshTotalVisibleMessageCount();
            }
            if (newShowErrorMessages != _showErrorMessages)
            {
                _showErrorMessages = newShowErrorMessages;
                RefreshTotalVisibleMessageCount();
            }
            GUILayout.Space(8);
            GUILayout.EndHorizontal();

            EditorGUIUtility.AddCursorRect(_dividerRect, MouseCursor.ResizeVertical);
            #endregion

            if (Event.current.type == EventType.MouseDown &&
                Event.current.button == 0 &&
                _dividerRect.Contains(Event.current.mousePosition))
            {
                _draggingDivider          = true;
                _mouseYOnDividerDragStart = Event.current.mousePosition.y;
                _heightOnDividerDragStart = height;
                requestRepaint            = true;
            }

            if (Event.current.type == EventType.MouseUp)
            {
                _draggingDivider = false;
                requestRepaint   = true;
            }

            if (_draggingDivider)
            {
                var newHeight = _heightOnDividerDragStart + (Event.current.mousePosition.y - _mouseYOnDividerDragStart);
                _buildStepsHeightPercent = newHeight / position.height;
                requestRepaint           = true;
            }

            _logMessagesScrollPos = GUILayout.BeginScrollView(_logMessagesScrollPos,
                                                              BuildReportTool.Window.Settings.HIDDEN_SCROLLBAR_STYLE_NAME,
                                                              "verticalscrollbar", BRT_BuildReportWindow.LayoutNone);

            if (_showLogMessages || _showWarnMessages || _showErrorMessages)
            {
                if (hasStepSelected)
                {
                    BuildLogMessage[] messages;
                    if (_showLogMessagesCollapsed)
                    {
                        messages = steps[_selectedStepIdx].CollapsedBuildLogMessages;
                    }
                    else
                    {
                        messages = steps[_selectedStepIdx].BuildLogMessages;
                    }

                    int totalToShow = 0;
                    if (_showLogMessages)
                    {
                        totalToShow += steps[_selectedStepIdx].InfoLogCount;
                    }
                    if (_showWarnMessages)
                    {
                        totalToShow += steps[_selectedStepIdx].WarnLogCount;
                    }
                    if (_showErrorMessages)
                    {
                        totalToShow += steps[_selectedStepIdx].ErrorLogCount;
                    }

                    if (totalToShow > 0)
                    {
                        useAlt = true;

                        int messageToStartIdx = 0;

                        int messageToStartCount = 0;
                        for (int m = 0; m < messages.Length; ++m)
                        {
                            var logTypeIcon = GetLogIcon(messages[m].LogType);
                            if (logTypeIcon == _logIcon && !_showLogMessages)
                            {
                                continue;
                            }
                            if (logTypeIcon == _warnIcon && !_showWarnMessages)
                            {
                                continue;
                            }
                            if (logTypeIcon == _errorIcon && !_showErrorMessages)
                            {
                                continue;
                            }

                            ++messageToStartCount;
                            if (messageToStartCount - 1 == _logMessageToShowStartOffset)
                            {
                                messageToStartIdx = m;
                                break;
                            }
                        }

                        DrawMessages(messages, messageToStartIdx, messagePaginationLength,
                                     _selectedStepIdx, 0, ref useAlt, ref requestRepaint);
                    }
                }
                else
                {
                    useAlt = true;

                    int messageToStartIdx = 0;
                    int stepToStartIdx    = 0;

                    int messageToStartCount = 0;
                    for (int s = 0; s < steps.Length; ++s)
                    {
                        var step = steps[s];

                        BuildLogMessage[] messages;
                        if (_showLogMessagesCollapsed)
                        {
                            messages = step.CollapsedBuildLogMessages;
                        }
                        else
                        {
                            messages = step.BuildLogMessages;
                        }

                        if (messages == null || messages.Length == 0)
                        {
                            continue;
                        }

                        int totalToShow = 0;
                        if (_showLogMessages)
                        {
                            totalToShow += step.InfoLogCount;
                        }

                        if (_showWarnMessages)
                        {
                            totalToShow += step.WarnLogCount;
                        }

                        if (_showErrorMessages)
                        {
                            totalToShow += step.ErrorLogCount;
                        }

                        if (totalToShow == 0)
                        {
                            continue;
                        }

                        for (int m = 0; m < messages.Length; ++m)
                        {
                            var logTypeIcon = GetLogIcon(messages[m].LogType);
                            if (logTypeIcon == _logIcon && !_showLogMessages)
                            {
                                continue;
                            }

                            if (logTypeIcon == _warnIcon && !_showWarnMessages)
                            {
                                continue;
                            }

                            if (logTypeIcon == _errorIcon && !_showErrorMessages)
                            {
                                continue;
                            }

                            ++messageToStartCount;
                            if (messageToStartCount - 1 == _logMessageToShowStartOffset)
                            {
                                messageToStartIdx = m;
                                stepToStartIdx    = s;
                                break;
                            }
                        }
                    }

                    int totalShownSoFar = 0;
                    for (int s = stepToStartIdx; s < steps.Length; ++s)
                    {
                        var step = steps[s];

                        BuildLogMessage[] messages;
                        if (_showLogMessagesCollapsed)
                        {
                            messages = step.CollapsedBuildLogMessages;
                        }
                        else
                        {
                            messages = step.BuildLogMessages;
                        }

                        if (messages == null || messages.Length == 0)
                        {
                            continue;
                        }

                        int totalToShow = 0;
                        if (_showLogMessages)
                        {
                            if (_showLogMessagesCollapsed)
                            {
                                totalToShow += step.CollapsedInfoLogCount;
                            }
                            else
                            {
                                totalToShow += step.InfoLogCount;
                            }
                        }
                        if (_showWarnMessages)
                        {
                            if (_showLogMessagesCollapsed)
                            {
                                totalToShow += step.CollapsedWarnLogCount;
                            }
                            else
                            {
                                totalToShow += step.WarnLogCount;
                            }
                        }
                        if (_showErrorMessages)
                        {
                            if (_showLogMessagesCollapsed)
                            {
                                totalToShow += step.CollapsedErrorLogCount;
                            }
                            else
                            {
                                totalToShow += step.ErrorLogCount;
                            }
                        }

                        if (totalToShow == 0)
                        {
                            continue;
                        }

                        string styleToUse = useAlt
                                                                            ? BuildReportTool.Window.Settings.LIST_SMALL_ALT_STYLE_NAME
                                                                            : BuildReportTool.Window.Settings.LIST_SMALL_STYLE_NAME;

                        GUILayout.BeginHorizontal(styleToUse, BRT_BuildReportWindow.LayoutNone);
                        GUILayout.Space(8);
                        GUILayout.Button(step.Name, styleToUse, BRT_BuildReportWindow.LayoutHeight25);
                        GUILayout.EndHorizontal();

                        useAlt = !useAlt;

                        DrawMessages(messages, messageToStartIdx, messagePaginationLength - totalShownSoFar,
                                     s, 20, ref useAlt, ref requestRepaint);

                        totalShownSoFar += totalToShow;

                        if (totalShownSoFar >= messagePaginationLength)
                        {
                            break;
                        }
                    }
                }
            }

            GUILayout.EndScrollView();
            GUILayout.EndVertical();

            GUILayout.EndHorizontal();
            #endregion

            // if clicked on nothing interactable, then remove selection
            if (GUI.Button(_stepsViewRect, GUIContent.none, "HiddenScrollbar"))
            {
                SelectStep(-1, steps);
            }
        }
コード例 #13
0
 public abstract void DrawGUI(Rect position,
                              BuildInfo buildReportToDisplay, AssetDependencies assetDependencies, TextureData textureData,
                              UnityBuildReport unityBuildReport,
                              out bool requestRepaint
                              );
コード例 #14
0
 public abstract void RefreshData(BuildInfo buildReport, AssetDependencies assetDependencies, TextureData textureData, UnityBuildReport unityBuildReport);
コード例 #15
0
        public override void DrawGUI(Rect position, BuildInfo buildReportToDisplay, AssetDependencies assetDependencies,
                                     out bool requestRepaint)
        {
            requestRepaint = false;
            var prevEnabled = GUI.enabled;

            GUILayout.Space(10);             // extra top padding


            _assetListScrollPos = GUILayout.BeginScrollView(_assetListScrollPos);

            GUILayout.BeginHorizontal();
            GUILayout.Space(20);             // extra left padding
            GUILayout.BeginVertical();

            if (!string.IsNullOrEmpty(BuildReportTool.Options.FoundPathForSavedOptions))
            {
                GUILayout.BeginHorizontal(BuildReportTool.Window.Settings.BOXED_LABEL_STYLE_NAME);
                GUILayout.Label(string.Format("Using options file in: {0}",
                                              BuildReportTool.Options.FoundPathForSavedOptions));
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("Reload"))
                {
                    BuildReportTool.Options.RefreshOptions();
                }

                GUILayout.EndHorizontal();

                GUILayout.Space(10);
            }

            // === Main Options ===

            GUILayout.Label("Main Options", BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);


            BuildReportTool.Options.CollectBuildInfo = GUILayout.Toggle(BuildReportTool.Options.CollectBuildInfo,
                                                                        "Automatically generate and save a Build Report file after building (does not include batchmode builds)");
            GUILayout.BeginHorizontal();
            GUILayout.Space(20);
            GUILayout.Label(
                "Note: For batchmode builds, to create build reports, call BuildReportTool.ReportGenerator.CreateReport() after BuildPipeline.BuildPlayer() in your build scripts. The Build Report is automatically saved as an XML file.",
                BuildReportTool.Window.Settings.BOXED_LABEL_STYLE_NAME, GUILayout.MaxWidth(525));
            GUILayout.EndHorizontal();
            GUILayout.Space(10);

            BuildReportTool.Options.AutoShowWindowAfterNormalBuild = GUILayout.Toggle(
                BuildReportTool.Options.AutoShowWindowAfterNormalBuild,
                "Automatically show Build Report Window after building (if it is not open yet)");

            BuildReportTool.Options.AutoResortAssetsWhenUnityEditorRegainsFocus = GUILayout.Toggle(
                BuildReportTool.Options.AutoResortAssetsWhenUnityEditorRegainsFocus,
                "Re-sort assets automatically whenever the Unity Editor regains focus");

            BuildReportTool.Options.AllowDeletingOfUsedAssets = GUILayout.Toggle(
                BuildReportTool.Options.AllowDeletingOfUsedAssets,
                "Allow deleting of Used Assets (practice caution!)");

            GUILayout.Space(20);

            BuildReportTool.Options.UseThreadedReportGeneration = GUILayout.Toggle(
                BuildReportTool.Options.UseThreadedReportGeneration,
                "When generating Build Reports, use a separate thread");
            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(false));
            GUILayout.Space(20);
            GUILayout.Label(
                "Note: For batchmode builds, report generation with BuildReportTool.ReportGenerator.CreateReport() is always non-threaded.",
                BuildReportTool.Window.Settings.BOXED_LABEL_STYLE_NAME, GUILayout.MaxWidth(525));
            GUILayout.EndHorizontal();
            GUILayout.Space(10);

            BuildReportTool.Options.UseThreadedFileLoading = GUILayout.Toggle(
                BuildReportTool.Options.UseThreadedFileLoading,
                "When loading Build Report files, use a separate thread");

            //GUILayout.Space(20);

            GUILayout.Space(BuildReportTool.Window.Settings.CATEGORY_VERTICAL_SPACING);

            // === Data to include in the Build Report ===

            GUILayout.Label("Data to include in the Build Report", BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);

            BuildReportTool.Options.IncludeBuildSizeInReportCreation = GUILayout.Toggle(
                BuildReportTool.Options.IncludeBuildSizeInReportCreation,
                "Get build's file size upon creation of a build report");

            GUILayout.Space(10);

            //BuildReportTool.Options.GetImportedSizesForUsedAssets = GUILayout.Toggle(BuildReportTool.Options.GetImportedSizesForUsedAssets,
            //	"Get imported sizes of Used Assets upon creation of a build report");

            BuildReportTool.Options.GetImportedSizesForUnusedAssets = GUILayout.Toggle(
                BuildReportTool.Options.GetImportedSizesForUnusedAssets,
                "Get imported sizes of Unused Assets upon creation of a build report");

            BuildReportTool.Options.GetSizeBeforeBuildForUsedAssets = GUILayout.Toggle(
                BuildReportTool.Options.GetSizeBeforeBuildForUsedAssets,
                "Get size-before-build of Used Assets upon creation of a build report");


            BuildReportTool.Options.IncludeSvnInUnused =
                GUILayout.Toggle(BuildReportTool.Options.IncludeSvnInUnused, Labels.INCLUDE_SVN_LABEL);
            BuildReportTool.Options.IncludeGitInUnused =
                GUILayout.Toggle(BuildReportTool.Options.IncludeGitInUnused, Labels.INCLUDE_GIT_LABEL);

            GUILayout.Space(10);

            BuildReportTool.Options.GetProjectSettings = GUILayout.Toggle(BuildReportTool.Options.GetProjectSettings,
                                                                          "Get Unity project settings upon creation of a build report");

            GUILayout.Space(10);

            BuildReportTool.Options.CalculateAssetDependencies = GUILayout.Toggle(
                BuildReportTool.Options.CalculateAssetDependencies,
                "Calculate asset dependencies upon creation of a build report");

            BuildReportTool.Options.CalculateAssetDependenciesOnUnusedToo = GUILayout.Toggle(
                BuildReportTool.Options.CalculateAssetDependenciesOnUnusedToo,
                "Include Unused Assets in asset dependency calculations");

            GUILayout.Space(10);

            BuildReportTool.Options.ShowImportedSizeForUsedAssets = GUILayout.Toggle(
                BuildReportTool.Options.ShowImportedSizeForUsedAssets,
                "Show calculated sizes of Used Assets instead of reported sizes");

            if (_linkStyle == null)
            {
                _linkStyle = new GUIStyle(GUI.skin.label);
                _linkStyle.normal.textColor = new Color(0.266f, 0.533f, 1);
                _linkStyle.hover.textColor  = new Color(0.118f, 0.396f, 1);
                _linkStyle.stretchWidth     = false;
                _linkStyle.margin.bottom    = 0;
                _linkStyle.padding.bottom   = 0;
            }

            if (_textBesideLinkStyle == null)
            {
                _textBesideLinkStyle = new GUIStyle(GUI.skin.label);
                _textBesideLinkStyle.stretchWidth   = false;
                _textBesideLinkStyle.margin.right   = 0;
                _textBesideLinkStyle.padding.right  = 0;
                _textBesideLinkStyle.margin.bottom  = 0;
                _textBesideLinkStyle.padding.bottom = 0;
            }

            GUILayout.BeginHorizontal();
            GUILayout.Label("Note: This option is a workaround for the ", _textBesideLinkStyle);
            if (GUILayout.Button("Unity bug with Issue ID 885258", _linkStyle))
            {
                Application.OpenURL(
                    "https://issuetracker.unity3d.com/issues/unity-reports-incorrect-textures-size-in-the-editor-dot-log-after-building-on-standalone");
            }

            GUILayout.EndHorizontal();
            GUILayout.Label(
                "This bug has already been fixed in Unity 2017.1, 5.5.3p1 and 5.6.0p1. Only enable this if you are affected by the bug.");

            GUILayout.Space(15);

            GUILayout.BeginHorizontal();
            GUILayout.Label("Calculation Level: ");

            GUILayout.BeginVertical();
            int newSelectedCalculationLevelIdx = EditorGUILayout.Popup(_selectedCalculationLevelIdx, CalculationTypeLabels,
                                                                       "Popup", GUILayout.Width(300));

            GUILayout.BeginHorizontal();
            GUILayout.Space(20);
            GUILayout.Label(CalculationLevelDescription, GUILayout.MaxWidth(500), GUILayout.MinHeight(75));
            GUILayout.EndHorizontal();
            GUILayout.EndVertical();

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            GUILayout.Space(BuildReportTool.Window.Settings.CATEGORY_VERTICAL_SPACING);

            if (newSelectedCalculationLevelIdx != _selectedCalculationLevelIdx)
            {
                _selectedCalculationLevelIdx = newSelectedCalculationLevelIdx;
                SetCalculationLevelFromGuiIdx(newSelectedCalculationLevelIdx);
            }


            // === Editor Log File ===

            GUILayout.Label("Editor Log File", BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);

            // which Editor.log is used
            GUILayout.BeginHorizontal();
            GUILayout.Label(Labels.EDITOR_LOG_LABEL + BuildReportTool.Util.EditorLogPathOverrideMessage + ": " +
                            BuildReportTool.Util.UsedEditorLogPath);
            if (GUILayout.Button(OPEN_IN_FILE_BROWSER_OS_SPECIFIC_LABEL) && BuildReportTool.Util.UsedEditorLogExists)
            {
                BuildReportTool.Util.OpenInFileBrowser(BuildReportTool.Util.UsedEditorLogPath);
            }

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            if (!BuildReportTool.Util.UsedEditorLogExists)
            {
                if (BuildReportTool.Util.IsDefaultEditorLogPathOverridden)
                {
                    GUILayout.Label(Labels.OVERRIDE_LOG_NOT_FOUND_MSG);
                }
                else
                {
                    GUILayout.Label(Labels.DEFAULT_EDITOR_LOG_NOT_FOUND_MSG);
                }
            }

            // override which log is opened
            GUILayout.BeginHorizontal();
            if (GUILayout.Button(Labels.SET_OVERRIDE_LOG_LABEL))
            {
                string filepath = EditorUtility.OpenFilePanel(
                    "",                     // title
                    "",                     // default path
                    "");                    // file type (only one type allowed?)

                if (!string.IsNullOrEmpty(filepath))
                {
                    BuildReportTool.Options.EditorLogOverridePath = filepath;
                }
            }

            if (GUILayout.Button(Labels.CLEAR_OVERRIDE_LOG_LABEL))
            {
                BuildReportTool.Options.EditorLogOverridePath = "";
            }

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            GUILayout.Space(BuildReportTool.Window.Settings.CATEGORY_VERTICAL_SPACING);


            // === Asset Lists ===

            GUILayout.Label("Asset Lists", BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);


            // top largest used
            GUILayout.BeginHorizontal();
            GUILayout.Label("Number of Top Largest Used Assets to display in Overview Tab:");
            string numberOfTopUsedInput =
                GUILayout.TextField(BuildReportTool.Options.NumberOfTopLargestUsedAssetsToShow.ToString(),
                                    GUILayout.MinWidth(100));

            numberOfTopUsedInput =
                Regex.Replace(numberOfTopUsedInput, @"[^0-9]", "");                 // positive numbers only, no fractions
            if (string.IsNullOrEmpty(numberOfTopUsedInput))
            {
                numberOfTopUsedInput = "0";
            }

            BuildReportTool.Options.NumberOfTopLargestUsedAssetsToShow = int.Parse(numberOfTopUsedInput);
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();


            // top largest unused
            GUILayout.BeginHorizontal();
            GUILayout.Label("Number of Top Largest Unused Assets to display in Overview Tab:");
            string numberOfTopUnusedInput =
                GUILayout.TextField(BuildReportTool.Options.NumberOfTopLargestUnusedAssetsToShow.ToString(),
                                    GUILayout.MinWidth(100));

            numberOfTopUnusedInput =
                Regex.Replace(numberOfTopUnusedInput, @"[^0-9]", "");                 // positive numbers only, no fractions
            if (string.IsNullOrEmpty(numberOfTopUnusedInput))
            {
                numberOfTopUnusedInput = "0";
            }

            BuildReportTool.Options.NumberOfTopLargestUnusedAssetsToShow = int.Parse(numberOfTopUnusedInput);
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();
            GUILayout.Space(20);
            GUILayout.Label(
                "Note: To disable the display of Top Largest Assets, use a value of 0.",
                BuildReportTool.Window.Settings.BOXED_LABEL_STYLE_NAME, GUILayout.MaxWidth(525));
            GUILayout.EndHorizontal();

            GUILayout.Space(10);

            // pagination length
            GUILayout.BeginHorizontal();
            GUILayout.Label("View assets per groups of:");
            string pageInput = GUILayout.TextField(BuildReportTool.Options.AssetListPaginationLength.ToString(),
                                                   GUILayout.MinWidth(100));

            pageInput = Regex.Replace(pageInput, @"[^0-9]", "");             // positive numbers only, no fractions
            if (string.IsNullOrEmpty(pageInput))
            {
                pageInput = "0";
            }

            BuildReportTool.Options.AssetListPaginationLength = int.Parse(pageInput);
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            GUILayout.Space(10);

            // unused assets entries per batch
            GUILayout.BeginHorizontal();
            GUILayout.Label("Process unused assets per batches of:");
            string entriesPerBatchInput =
                GUILayout.TextField(BuildReportTool.Options.UnusedAssetsEntriesPerBatch.ToString(),
                                    GUILayout.MinWidth(100));

            entriesPerBatchInput =
                Regex.Replace(entriesPerBatchInput, @"[^0-9]", "");                 // positive numbers only, no fractions
            if (string.IsNullOrEmpty(entriesPerBatchInput))
            {
                entriesPerBatchInput = "0";
            }

            BuildReportTool.Options.UnusedAssetsEntriesPerBatch = int.Parse(entriesPerBatchInput);
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();


            GUILayout.Space(10);

            // choose which file filter group to use
            GUILayout.BeginHorizontal();
            GUILayout.Label(Labels.FILTER_GROUP_TO_USE_LABEL);
            BuildReportTool.Options.FilterToUseInt = GUILayout.SelectionGrid(BuildReportTool.Options.FilterToUseInt,
                                                                             FileFilterToUseType, FileFilterToUseType.Length);
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            // display which file filter group is used
            GUILayout.BeginHorizontal();
            GUILayout.Label(Labels.FILTER_GROUP_FILE_PATH_LABEL +
                            BuildReportTool
                            .FiltersUsed.GetProperFileFilterGroupToUseFilePath());                     // display path to used file filter
            if (GUILayout.Button(OPEN_IN_FILE_BROWSER_OS_SPECIFIC_LABEL))
            {
                BuildReportTool.Util.OpenInFileBrowser(BuildReportTool.FiltersUsed.GetProperFileFilterGroupToUseFilePath());
            }

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            GUILayout.Space(10);


            GUILayout.BeginHorizontal();
            GUILayout.Label("Asset Ping method:");
            BuildReportTool.Options.DoubleClickOnAssetWillPing = GUILayout.SelectionGrid(
                BuildReportTool.Options.DoubleClickOnAssetWillPing
                                                                                             ? 1
                                                                                             : 0,
                AssetPingTypeLabels, 2, GUILayout.Height(26)) == 1;
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Space(20);

            GUILayout.Label(
                BuildReportTool.Options.DoubleClickOnAssetWillPing
                                        ? "Note: To ping multiple assets, select the assets, and hold Alt while double-clicking one of them."
                                        : "Note: To ping multiple assets, select the assets, and hold Alt while pressing one of their Ping buttons.",
                BuildReportTool.Window.Settings.BOXED_LABEL_STYLE_NAME, GUILayout.MaxWidth(593));

            GUILayout.EndHorizontal();

            GUILayout.Space(10);

            //AssetUsageLabelTypeLabels

            GUILayout.BeginHorizontal();
            GUILayout.Label("Asset usage labels:");
            BuildReportTool.Options.AssetUsageLabelType = GUILayout.SelectionGrid(
                BuildReportTool.Options.AssetUsageLabelType, AssetUsageLabelTypeLabels, 1);
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            GUILayout.Space(10);

            BuildReportTool.Options.ShowAssetPrimaryUsersInTooltipIfAvailable = GUILayout.Toggle(
                BuildReportTool.Options.ShowAssetPrimaryUsersInTooltipIfAvailable,
                "Show end users in asset tooltip (if available)");

            GUILayout.BeginHorizontal();
            GUILayout.Space(20);
            GUILayout.Label(
                "Note: \"End users\" are the scenes (or Resources assets) that use a given asset (directly or indirectly), they are the main reason why that asset got included in the build.",
                BuildReportTool.Window.Settings.BOXED_LABEL_STYLE_NAME, GUILayout.MaxWidth(525));
            GUILayout.EndHorizontal();

            GUILayout.Space(10);

            BuildReportTool.Options.ShowTooltipThumbnail = GUILayout.Toggle(
                BuildReportTool.Options.ShowTooltipThumbnail,
                "Show thumbnail in asset tooltip");

            GUI.enabled = prevEnabled && BuildReportTool.Options.ShowTooltipThumbnail;

            GUILayout.BeginHorizontal();
            GUILayout.Label("Show thumbnail when:");
            BuildReportTool.Options.ShowThumbnailOnHoverType = GUILayout.SelectionGrid(
                BuildReportTool.Options.ShowThumbnailOnHoverType, ShowThumbnailOnHoverTypeLabels,
                ShowThumbnailOnHoverTypeLabels.Length, GUILayout.Height(26));
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();

            GUILayout.Label("Thumbnail Tooltip Width:");
            string tooltipThumbnailWidthInput =
                GUILayout.TextField(BuildReportTool.Options.TooltipThumbnailWidth.ToString(),
                                    GUILayout.MinWidth(100));

            tooltipThumbnailWidthInput =
                Regex.Replace(tooltipThumbnailWidthInput, @"[^0-9]", "");                 // positive numbers only, no fractions
            if (string.IsNullOrEmpty(tooltipThumbnailWidthInput))
            {
                tooltipThumbnailWidthInput = "0";
            }

            BuildReportTool.Options.TooltipThumbnailWidth = int.Parse(tooltipThumbnailWidthInput);

            GUILayout.Space(3);

            GUILayout.Label("Height:");
            string tooltipThumbnailHeightInput =
                GUILayout.TextField(BuildReportTool.Options.TooltipThumbnailHeight.ToString(),
                                    GUILayout.MinWidth(100));

            tooltipThumbnailHeightInput =
                Regex.Replace(tooltipThumbnailHeightInput, @"[^0-9]", "");                 // positive numbers only, no fractions
            if (string.IsNullOrEmpty(tooltipThumbnailHeightInput))
            {
                tooltipThumbnailHeightInput = "0";
            }

            BuildReportTool.Options.TooltipThumbnailHeight = int.Parse(tooltipThumbnailHeightInput);

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();

            GUILayout.Label("Thumbnail Tooltip Zoomed-in Width:");
            string tooltipThumbnailZoomedInWidthInput =
                GUILayout.TextField(BuildReportTool.Options.TooltipThumbnailZoomedInWidth.ToString(),
                                    GUILayout.MinWidth(100));

            tooltipThumbnailZoomedInWidthInput =
                Regex.Replace(tooltipThumbnailZoomedInWidthInput, @"[^0-9]", "");                 // positive numbers only, no fractions
            if (string.IsNullOrEmpty(tooltipThumbnailZoomedInWidthInput))
            {
                tooltipThumbnailZoomedInWidthInput = "0";
            }

            BuildReportTool.Options.TooltipThumbnailZoomedInWidth = int.Parse(tooltipThumbnailZoomedInWidthInput);

            GUILayout.Space(3);

            GUILayout.Label("Height:");
            string tooltipThumbnailZoomedInHeightInput =
                GUILayout.TextField(BuildReportTool.Options.TooltipThumbnailZoomedInHeight.ToString(),
                                    GUILayout.MinWidth(100));

            tooltipThumbnailZoomedInHeightInput =
                Regex.Replace(tooltipThumbnailZoomedInHeightInput, @"[^0-9]", "");                 // positive numbers only, no fractions
            if (string.IsNullOrEmpty(tooltipThumbnailZoomedInHeightInput))
            {
                tooltipThumbnailZoomedInHeightInput = "0";
            }

            BuildReportTool.Options.TooltipThumbnailZoomedInHeight = int.Parse(tooltipThumbnailZoomedInHeightInput);

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUI.enabled = prevEnabled;

            GUILayout.BeginHorizontal();
            GUILayout.Space(20);
            GUILayout.Label(
                "Note: Hold Ctrl while a thumbnail tooltip is shown to zoom-in.",
                BuildReportTool.Window.Settings.BOXED_LABEL_STYLE_NAME, GUILayout.MaxWidth(525));
            GUILayout.EndHorizontal();


            GUILayout.Space(BuildReportTool.Window.Settings.CATEGORY_VERTICAL_SPACING);


            // === Build Report Files ===

            GUILayout.Label("Build Report Files", BuildReportTool.Window.Settings.INFO_TITLE_STYLE_NAME);

            // build report files save path
            GUILayout.BeginHorizontal();
            GUILayout.Label(Labels.SAVE_PATH_LABEL + BuildReportTool.Options.BuildReportSavePath);
            if (GUILayout.Button(OPEN_IN_FILE_BROWSER_OS_SPECIFIC_LABEL))
            {
                BuildReportTool.Util.OpenInFileBrowser(BuildReportTool.Options.BuildReportSavePath);
            }

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            // change name of build reports folder
            GUILayout.BeginHorizontal();
            GUILayout.Label(Labels.SAVE_FOLDER_NAME_LABEL);
            BuildReportTool.Options.BuildReportFolderName =
                GUILayout.TextField(BuildReportTool.Options.BuildReportFolderName, GUILayout.MinWidth(250));
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            // where to save build reports (my docs/home, or beside project)
            GUILayout.BeginHorizontal();
            GUILayout.Label(Labels.SAVE_PATH_TYPE_LABEL);

            if (_saveTypeLabels == null)
            {
                _saveTypeLabels = new[]
                { SAVE_PATH_TYPE_PERSONAL_OS_SPECIFIC_LABEL, Labels.SAVE_PATH_TYPE_PROJECT_LABEL };
            }

            BuildReportTool.Options.SaveType = GUILayout.SelectionGrid(BuildReportTool.Options.SaveType, _saveTypeLabels,
                                                                       _saveTypeLabels.Length);
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            GUILayout.Space(BuildReportTool.Window.Settings.CATEGORY_VERTICAL_SPACING);


            GUILayout.EndVertical();
            GUILayout.Space(20);             // extra right padding
            GUILayout.EndHorizontal();

            GUILayout.EndScrollView();

            //if (BuildReportTool.Options.SaveType == BuildReportTool.Options.SAVE_TYPE_PERSONAL)
            //{
            // changed to user's personal folder
            //BuildReportTool.ReportGenerator.ChangeSavePathToUserPersonalFolder();
            //}
            //else if (BuildReportTool.Options.SaveType == BuildReportTool.Options.SAVE_TYPE_PROJECT)
            //{
            // changed to project folder
            //BuildReportTool.ReportGenerator.ChangeSavePathToProjectFolder();
            //}
        }
コード例 #16
0
	public abstract void DrawGUI(Rect position, BuildInfo buildReportToDisplay, AssetDependencies assetDependencies, out bool requestRepaint);
コード例 #17
0
 static void AssignHoveredAssetEndUsers(AssetDependencies assetDependencies)
 {
     BuildReportTool.AssetDependencies.PopulateAssetEndUsers(HoveredAssetEntryPath, assetDependencies);
 }
コード例 #18
0
 public virtual void Update(double timeNow, double deltaTime, BuildInfo buildReportToDisplay,
                            AssetDependencies assetDependencies)
 {
 }
コード例 #19
0
        public override void DrawGUI(Rect position, BuildInfo buildReportToDisplay, AssetDependencies assetDependencies, out bool requestRepaint)
        {
            BuildSettingCategory b = ReportGenerator.GetBuildSettingCategoryFromBuildValues(buildReportToDisplay);

            _buildTargetOfReport = UnityBuildSettingsUtility.GetReadableBuildSettingCategory(b);

            UnityBuildSettings settings = buildReportToDisplay.UnityBuildSettings;

            if (settings == null)
            {
                Utility.DrawCentralMessage(position, "No \"Project Settings\" recorded in this build report.");
                requestRepaint = false;
                return;
            }

            // ----------------------------------------------------------
            // top bar

            GUILayout.Space(1);
            GUILayout.BeginHorizontal();

            GUILayout.Label(" ", BuildReportTool.Window.Settings.TOP_BAR_BG_STYLE_NAME);

            GUILayout.Space(8);
            GUILayout.Label("Build Target: ", BuildReportTool.Window.Settings.TOP_BAR_LABEL_STYLE_NAME);

            InitializeDropdownBoxLabelsIfNeeded();
            _selectedSettingsIdxFromDropdownBox = EditorGUILayout.Popup(_selectedSettingsIdxFromDropdownBox, _settingDropdownBoxLabels, BuildReportTool.Window.Settings.FILE_FILTER_POPUP_STYLE_NAME);
            GUILayout.Space(15);

            GUILayout.Label("Note: Project was built in " + _buildTargetOfReport + " target", BuildReportTool.Window.Settings.TOP_BAR_LABEL_STYLE_NAME);

            GUILayout.FlexibleSpace();

            _settingsShown = UnityBuildSettingsUtility.GetSettingsCategoryFromIdx(_selectedSettingsIdxFromDropdownBox);

            GUILayout.EndHorizontal();

            // ----------------------------------------------------------

            _scrollPos = GUILayout.BeginScrollView(_scrollPos);

            GUILayout.BeginHorizontal();

            GUILayout.Space(10);
            GUILayout.BeginVertical();


            GUILayout.Space(10);



            // =================================================================
            DrawProjectSettings(buildReportToDisplay, settings);
            GUILayout.Space(SETTINGS_GROUP_SPACING);


            // =================================================================
            DrawPathSettings(buildReportToDisplay, settings);
            GUILayout.Space(SETTINGS_GROUP_SPACING);


            // =================================================================
            DrawBuildSettings(buildReportToDisplay, settings);
            GUILayout.Space(SETTINGS_GROUP_SPACING);


            // =================================================================
            DrawRuntimeSettings(buildReportToDisplay, settings);


            // --------------------------------------------------
            // security settings
            if (IsShowingMacSettings)
            {
                DrawSetting("Use App Store validation:", settings.MacUseAppStoreValidation);
            }
            else if (IsShowingAndroidSettings)
            {
                DrawSetting("Use license verification:", settings.AndroidUseLicenseVerification);
            }


            GUILayout.Space(SETTINGS_GROUP_SPACING);


            // =================================================================
            DrawDebugSettings(buildReportToDisplay, settings);
            GUILayout.Space(SETTINGS_GROUP_SPACING);


            // =================================================================
            DrawCodeSettings(buildReportToDisplay, settings);
            GUILayout.Space(SETTINGS_GROUP_SPACING);


            // =================================================================
            DrawGraphicsSettings(buildReportToDisplay, settings);
            GUILayout.Space(SETTINGS_GROUP_SPACING);


            GUILayout.Space(10);
            GUILayout.EndVertical();
            GUILayout.EndHorizontal();
            GUILayout.EndScrollView();
            requestRepaint = false;
        }
コード例 #20
0
        /// <summary>
        /// Adds the specified asset as a dependency of the asset being loaded.
        /// </summary>
        /// <param name="dependency">The asset path of the dependency.</param>
        public void AddAssetDependency(String dependency)
        {
            Contract.RequireNotEmpty(dependency, nameof(dependency));

            AssetDependencies.Add(dependency);
        }