private void OnFooterGUI(SettingsScope scope) { if (!PluginContainer.initialized) { return; } LudiqGUI.BeginVertical(Styles.background); LudiqGUI.Space(8); if (GUILayout.Button("Reset to Defaults")) { if (EditorUtility.DisplayDialog("Reset to Defaults", $"Are you sure you want to reset your {ScopeName(scope).ToLower()} to default?", "Reset", "Cancel")) { foreach (var item in this[scope]) { item.Reset(); OnItemChange(item); item.Save(); } InternalEditorUtility.RepaintAllViews(); } } LudiqGUI.Space(8); LudiqGUI.EndVertical(); }
public void OnGUI(SettingsScope scope, string query) { if (!PluginContainer.initialized) { return; } if (editor == null) { editor = accessor.CreateInitializedEditor(); } LudiqGUI.BeginVertical(Styles.background); EditorGUI.BeginChangeCheck(); using (Inspector.expandTooltip.Override(true)) { foreach (var item in this[scope].Where(i => i.visible)) { EditorGUI.BeginChangeCheck(); LudiqGUI.Space(2); if (!string.IsNullOrEmpty(query)) { var haystack = Haystack(item); var matchesSearch = SearchUtility.Matches(query, haystack); using (LudiqGUI.color.Override(matchesSearch ? Color.white : Color.white.WithAlphaMultiplied(0.5f))) using (LudiqGUIUtility.LabelHighlight(query)) { editor.ChildInspector(item).DrawFieldLayout(); } } else { editor.ChildInspector(item).DrawFieldLayout(); } LudiqGUI.Space(2); if (EditorGUI.EndChangeCheck()) { OnItemChange(item); } } } if (EditorGUI.EndChangeCheck()) { Save(); InternalEditorUtility.RepaintAllViews(); } LudiqGUI.EndVertical(); }
public override void OnGUI() { LudiqGUI.BeginVertical(); page.DrawHeader(); // GUILayout.Box(GUIContent.none, LudiqStyles.horizontalSeparator); GUILayout.BeginHorizontal(GUILayout.ExpandHeight(true)); page.DrawContent(); LudiqGUI.EndHorizontal(); LudiqGUI.EndVertical(); }
public static void DrawPluginVersionTable(IEnumerable <Plugin> plugins) { var savedColumnHeader = new GUIContent("Saved"); var installedColumnHeader = new GUIContent("Installed"); var pluginsColumnWidth = 0f; var savedColumnWidth = Styles.columnHeader.CalcSize(savedColumnHeader).x; var installedColumnWidth = Styles.columnHeader.CalcSize(installedColumnHeader).x; var stateColumnWidth = 0f; foreach (var plugin in plugins) { pluginsColumnWidth = Mathf.Max(pluginsColumnWidth, Styles.pluginName.CalcSize(new GUIContent(plugin.manifest.name)).x); savedColumnWidth = Mathf.Max(savedColumnWidth, Styles.version.CalcSize(new GUIContent(plugin.manifest.savedVersion.ToString())).x); installedColumnWidth = Mathf.Max(installedColumnWidth, Styles.version.CalcSize(new GUIContent(plugin.manifest.currentVersion.ToString())).x); stateColumnWidth = Mathf.Max(stateColumnWidth, Styles.state.CalcSize(VersionStateContent(plugin)).x); } LudiqGUI.BeginVertical(); // Header row LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); GUILayout.Label(GUIContent.none, Styles.columnHeader, GUILayout.Width(pluginsColumnWidth)); LudiqGUI.Space(Styles.columnSpacing); GUILayout.Label(savedColumnHeader, Styles.columnHeader, GUILayout.Width(savedColumnWidth)); LudiqGUI.Space(Styles.columnSpacing); GUILayout.Label(installedColumnHeader, Styles.columnHeader, GUILayout.Width(installedColumnWidth)); LudiqGUI.Space(Styles.columnSpacing); GUILayout.Label(GUIContent.none, Styles.state, GUILayout.Width(stateColumnWidth)); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); // Plugin rows foreach (var plugin in plugins) { LudiqGUI.Space(Styles.rowSpacing); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); GUILayout.Label(new GUIContent(plugin.manifest.name), Styles.pluginName, GUILayout.Width(pluginsColumnWidth)); LudiqGUI.Space(Styles.columnSpacing); GUILayout.Label(new GUIContent(plugin.manifest.savedVersion.ToString()), Styles.version, GUILayout.Width(savedColumnWidth)); LudiqGUI.Space(Styles.columnSpacing); GUILayout.Label(new GUIContent(plugin.manifest.currentVersion.ToString()), Styles.version, GUILayout.Width(installedColumnWidth)); LudiqGUI.Space(Styles.columnSpacing); GUILayout.Label(VersionStateContent(plugin), Styles.state, GUILayout.Width(stateColumnWidth)); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); } LudiqGUI.EndVertical(); }
protected void DrawCenteredMessage(string msg) { LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginVertical(); LudiqGUI.FlexibleSpace(); GUILayout.Label(msg); LudiqGUI.FlexibleSpace(); LudiqGUI.EndVertical(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); }
protected override void OnGUI() { LudiqGUI.BeginVertical(); currentPage?.DrawHeader(); GUILayout.BeginVertical(GUILayout.ExpandHeight(true)); currentPage?.DrawContent(); LudiqGUI.EndVertical(); GUILayout.Box(GUIContent.none, Styles.sectionBorder); GUILayout.BeginHorizontal(Styles.footerBackground); LudiqGUI.FlexibleSpace(); for (var i = 0; i < pages.Count; i++) { GUIStyle breadcrumbStyle; if (i == 0) { breadcrumbStyle = Styles.breadcrumbStart; } else if (i == pages.Count - 1) { breadcrumbStyle = Styles.breadcrumbEnd; } else { breadcrumbStyle = Styles.breadcrumbMid; } var page = pages[i]; EditorGUI.BeginDisabledGroup((!canNavigateForward && i > farthestNavigatedIndex) || (!canNavigateBackward && i < farthestNavigatedIndex)); if (GUILayout.Toggle(page == currentPage, page.shortTitle ?? page.title, breadcrumbStyle) && page != currentPage) { currentPage = page; } EditorGUI.EndDisabledGroup(); } LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.EndVertical(); }
private void OnOptionsGUI(FuzzyOptionNode parent, float scrollViewHeight) { if (parent.isLoading || (tree.showBackgroundWorkerProgress && BackgroundWorker.hasProgress)) { LudiqGUI.BeginVertical(); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); LudiqGUI.LoaderLayout(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.Space(16); LudiqGUI.BeginHorizontal(); LudiqGUI.Space(10); var progressBarPosition = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Height(19), GUILayout.ExpandWidth(true)); if (tree.showBackgroundWorkerProgress && BackgroundWorker.hasProgress) { EditorGUI.ProgressBar(progressBarPosition, BackgroundWorker.progressProportion, BackgroundWorker.progressLabel); } else if (showProgress) { EditorGUI.ProgressBar(progressBarPosition, progress, progressText); } LudiqGUI.Space(10); LudiqGUI.EndHorizontal(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndVertical(); Repaint(); return; } parent.scroll = GUILayout.BeginScrollView(parent.scroll); EditorGUIUtility.SetIconSize(new Vector2(IconSize.Small, IconSize.Small)); var selectedOptionPosition = default(Rect); if (e.type == EventType.Repaint) { minOptionWidth = 0; } foreach (var node in parent.children) { node.EnsureDrawable(); minOptionWidth = Mathf.Max(minOptionWidth, Mathf.Min(node.width, Styles.maxOptionWidth)); } for (var i = 0; i < parent.children.Count; i++) { var node = parent.children[i]; var optionPosition = GUILayoutUtility.GetRect(IconSize.Small, Styles.optionHeight, GUILayout.ExpandWidth(true)); if (((e.type == EventType.MouseMove && GUIUtility.GUIToScreenPoint(e.mousePosition) != lastMouseMovePosition) || e.type == EventType.MouseDown) && parent.selectedIndex != i && optionPosition.Contains(e.mousePosition)) { parent.selectedIndex = i; Repaint(); lastMouseMovePosition = GUIUtility.GUIToScreenPoint(e.mousePosition); } var optionIsSelected = false; if (i == parent.selectedIndex) { optionIsSelected = true; selectedOptionPosition = optionPosition; } // Clipping if (optionPosition.yMax < parent.scroll.y || optionPosition.yMin > parent.scroll.y + scrollViewHeight) { continue; } if (e.type == EventType.Repaint) { node.style.Draw(optionPosition, node.label, false, false, optionIsSelected, optionIsSelected); } var right = optionPosition.xMax; if (node.hasChildren) { right -= 13; var rightArrowPosition = new Rect(right, optionPosition.y + 4, 13, 13); if (e.type == EventType.Repaint) { Styles.rightArrow.Draw(rightArrowPosition, false, false, false, false); } } if (!node.hasChildren && tree.selected.Contains(node.option.value)) { right -= 16; var checkPosition = new Rect(right, optionPosition.y + 4, 12, 12); if (e.type == EventType.Repaint) { Styles.check.Draw(checkPosition, false, false, false, false); } } if (tree.favorites != null && tree.CanFavorite(node.option.value) && (optionIsSelected || tree.favorites.Contains(node.option.value))) { right -= 19; var starPosition = new Rect(right, optionPosition.y + 2, IconSize.Small, IconSize.Small); EditorGUI.BeginChangeCheck(); var isFavorite = tree.favorites.Contains(node.option.value); isFavorite = GUI.Toggle(starPosition, isFavorite, GUIContent.none, Styles.star); if (EditorGUI.EndChangeCheck()) { if (isFavorite) { tree.favorites.Add(node.option.value); } else { tree.favorites.Remove(node.option.value); } tree.OnFavoritesChange(); UpdateFavorites(); } } if (e.type == EventType.MouseDown && e.button == (int)MouseButton.Left && optionPosition.Contains(e.mousePosition)) { e.Use(); parent.selectedIndex = i; SelectChild(node); } } EditorGUIUtility.SetIconSize(default(Vector2)); GUILayout.EndScrollView(); if (scrollToSelected && e.type == EventType.Repaint) { scrollToSelected = false; var lastRect = GUILayoutUtility.GetLastRect(); if (selectedOptionPosition.yMax - lastRect.height > parent.scroll.y) { var scroll = parent.scroll; scroll.y = selectedOptionPosition.yMax - lastRect.height; parent.scroll = scroll; Repaint(); } if (selectedOptionPosition.y < parent.scroll.y) { var scroll = parent.scroll; scroll.y = selectedOptionPosition.y; parent.scroll = scroll; Repaint(); } } }
protected override void OnContentGUI() { var previousIconSize = EditorGUIUtility.GetIconSize(); EditorGUIUtility.SetIconSize(new Vector2(IconSize.Small, IconSize.Small)); GUILayout.BeginVertical(Styles.background, GUILayout.ExpandHeight(true)); var question = "How do you want names to be displayed?" + "\n"; question += "If you're not an experienced programmer, we recommend Human Naming."; LudiqGUI.FlexibleSpace(); GUILayout.Label(question, LudiqStyles.centeredLabel); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginVertical(); if (GUILayout.Button("Human Naming", Styles.modeButton)) { LudiqCore.Configuration.humanNaming = true; LudiqCore.Configuration.Save(); Complete(); } LudiqGUI.Space(-1); GUILayout.BeginVertical(Styles.modeBox); GUILayout.Label(new GUIContent(" Transform: Get Position", typeof(Transform).Icon()[IconSize.Small]), Styles.example); GUILayout.Label(new GUIContent(" Integer", typeof(int).Icon()[IconSize.Small]), Styles.example); GUILayout.Label(new GUIContent(" List of Game Object", typeof(List <GameObject>).Icon()[IconSize.Small]), Styles.example); GUILayout.Label(new GUIContent(" Rigidbody: Add Force (Force)", typeof(Rigidbody).Icon()[IconSize.Small]), Styles.example); LudiqGUI.EndVertical(); LudiqGUI.EndVertical(); LudiqGUI.Space(10); LudiqGUI.BeginVertical(); if (GUILayout.Button("Programmer Naming", Styles.modeButton)) { LudiqCore.Configuration.humanNaming = false; LudiqCore.Configuration.Save(); Complete(); } LudiqGUI.Space(-1); GUILayout.BeginVertical(Styles.modeBox); GUILayout.Label(new GUIContent(" Transform.position (Get)", typeof(Transform).Icon()[IconSize.Small]), Styles.example); GUILayout.Label(new GUIContent(" int", typeof(int).Icon()[IconSize.Small]), Styles.example); GUILayout.Label(new GUIContent(" List<GameObject>", typeof(List <GameObject>).Icon()[IconSize.Small]), Styles.example); GUILayout.Label(new GUIContent(" Rigidbody.AddForce(force)", typeof(Rigidbody).Icon()[IconSize.Small]), Styles.example); LudiqGUI.EndVertical(); LudiqGUI.EndVertical(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.FlexibleSpace(); GUILayout.Label("You can change this setting at any time from the setup or configuration.", EditorStyles.centeredGreyMiniLabel); LudiqGUI.FlexibleSpace(); LudiqGUI.EndVertical(); EditorGUIUtility.SetIconSize(previousIconSize); }
protected override void OnContentGUI() { if (!migrations.SelectMany(m => m.requiredActions).Any()) { Complete(); } scroll = GUILayout.BeginScrollView(scroll, Styles.background, GUILayout.ExpandHeight(true)); LudiqGUI.BeginVertical(); LudiqGUI.Space(Styles.space); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); GUILayout.Label("The following required update actions could not be completed automatically. Please complete them before continuing to use the plugin.", LudiqStyles.centeredLabel, GUILayout.MaxWidth(340)); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.Space(Styles.space); foreach (var migration in migrations) { if (!migration.requiredActions.Any()) { continue; } LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); GUILayout.BeginVertical(GUILayout.MaxWidth(300)); LudiqGUI.BeginHorizontal(); GUILayout.Box(BoltCore.Icons.warningMessage?[IconSize.Small], Styles.migrationIcon); GUILayout.Label($"{migration.plugin.manifest.name}, v.{migration.@from} to v.{migration.to}: ", Styles.migration); LudiqGUI.EndHorizontal(); foreach (var requiredAction in migration.requiredActions) { LudiqGUI.Space(5); LudiqGUI.BeginHorizontal(); GUILayout.Box(GUIContent.none, Styles.requiredActionBullet); GUILayout.Label(requiredAction, Styles.requiredAction); LudiqGUI.EndHorizontal(); } LudiqGUI.EndVertical(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.Space(Styles.space); } LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); if (GUILayout.Button(completeLabel, Styles.completeButton)) { Complete(); } LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.Space(Styles.space); LudiqGUI.EndVertical(); GUILayout.EndScrollView(); }
private void OnGUI() { EditorGUI.BeginDisabledGroup(EditorApplication.isCompiling); scroll = GUILayout.BeginScrollView(scroll); LudiqGUI.BeginHorizontal(); LudiqGUI.BeginVertical(); foreach (var configuration in configurations) { if (configuration.Any(i => i.visible)) { if (configurations.Count > 1) { Header(configuration.header.Replace(label + " ", "")); } EditorGUI.BeginChangeCheck(); using (Inspector.expandTooltip.Override(true)) { foreach (var item in configuration.Where(i => i.visible)) { LudiqGUI.Space(2); LudiqGUI.BeginHorizontal(); LudiqGUI.Space(4); var iconPosition = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Width(Styles.iconSize), GUILayout.Height(Styles.iconSize), GUILayout.ExpandHeight(false), GUILayout.ExpandWidth(false)); EditorTexture icon = null; string tooltip = null; if (item is ProjectSettingMetadata) { icon = BoltCore.Icons.projectSetting; tooltip = "Project Setting: Shared across users, local to this project. Included in version control."; } else if (item is EditorPrefMetadata) { icon = BoltCore.Icons.editorPref; tooltip = "Editor Pref: Local to this user, shared across projects. Excluded from version control."; } if (icon != null) { using (LudiqGUI.color.Override(GUI.color.WithAlpha(0.6f))) { GUI.Label(iconPosition, new GUIContent(icon[Styles.iconSize], tooltip), GUIStyle.none); } } LudiqGUI.Space(6); LudiqGUI.BeginVertical(); LudiqGUI.Space(-3); LudiqGUI.InspectorLayout(item); LudiqGUI.EndVertical(); LudiqGUI.EndHorizontal(); } } if (EditorGUI.EndChangeCheck()) { configuration.Save(); InternalEditorUtility.RepaintAllViews(); } } } LudiqGUI.Space(8); if (GUILayout.Button("Reset to Defaults")) { if (EditorUtility.DisplayDialog("Reset to Defaults", "Are you sure you want to reset your preferences and project settings to default?", "Reset")) { foreach (var configuration in configurations) { configuration.Reset(); configuration.Save(); } InternalEditorUtility.RepaintAllViews(); } } LudiqGUI.Space(8); LudiqGUI.EndVertical(); LudiqGUI.Space(8); LudiqGUI.EndHorizontal(); GUILayout.EndScrollView(); EditorGUI.EndDisabledGroup(); }
protected override void OnContentGUI() { scroll = GUILayout.BeginScrollView(scroll, Styles.background, GUILayout.ExpandHeight(true)); LudiqGUI.BeginVertical(); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); GUILayout.Label("When you start the update, the wizard will run migrations between the previous and new version and make all required automatic changes.", LudiqStyles.centeredLabel, GUILayout.MaxWidth(370)); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.FlexibleSpace(); EditorGUI.BeginDisabledGroup(queue.Count > 0 || migrated); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); if (GUILayout.Button("Update", Styles.updateButton)) { foreach (var step in steps) { step.Reset(); } foreach (var step in steps) { queue.Enqueue(step); } queue.Peek().Run(); } LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); EditorGUI.EndDisabledGroup(); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginVertical(); foreach (var step in steps) { step.OnGUI(); LudiqGUI.Space(Styles.spaceBetweenSteps); } LudiqGUI.EndVertical(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.FlexibleSpace(); EditorGUI.BeginDisabledGroup(!migrated); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); if (GUILayout.Button(completeLabel, Styles.completeButton)) { Complete(); } LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); EditorGUI.EndDisabledGroup(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndVertical(); GUILayout.EndScrollView(); }
private void OnOptionsGUI(float anim, FuzzyOptionNode parent) { var hasHeader = !string.IsNullOrEmpty(parent.option.headerLabel); var headerHeight = hasHeader ? Styles.headerHeight : 0; var searchFieldHeight = tree.searchable ? LudiqStyles.searchFieldOuterHeight : 0; var levelPosition = new Rect ( position.width * (1 - anim) + 1, searchFieldHeight + headerHeight, position.width - 2, height - (searchFieldHeight + 1) - headerHeight ); if (e.type == EventType.MouseDown && e.button == (int)MouseButton.Right && levelPosition.Contains(e.mousePosition)) { SelectParent(); e.Use(); } GUILayout.BeginArea(levelPosition); if (parent.isLoading) { LudiqGUI.BeginVertical(); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); LudiqGUI.LoaderLayout(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.Space(16); LudiqGUI.BeginHorizontal(); LudiqGUI.Space(10); var progressBarPosition = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Height(19), GUILayout.ExpandWidth(true)); if (showProgress) { EditorGUI.ProgressBar(progressBarPosition, progress, progressText); } LudiqGUI.Space(10); LudiqGUI.EndHorizontal(); LudiqGUI.Space(LudiqGUI.loaderSize * 1.5f); LudiqGUI.FlexibleSpace(); LudiqGUI.EndVertical(); Repaint(); } else { parent.scroll = GUILayout.BeginScrollView(parent.scroll); EditorGUIUtility.SetIconSize(new Vector2(IconSize.Small, IconSize.Small)); var selectedOptionPosition = default(Rect); foreach (var node in parent.children) { node.EnsurePositionable(); if (e.type == EventType.Layout || e.type == EventType.Repaint) { minOptionWidth = Mathf.Max(minOptionWidth, Mathf.Min(node.width, Styles.maxOptionWidth)); } } for (var i = 0; i < parent.children.Count; i++) { var node = parent.children[i]; var isSeparator = node.option is FuzzySeparator; var optionPosition = GUILayoutUtility.GetRect(IconSize.Small, isSeparator ? Styles.separator.fixedHeight : Styles.optionHeight, GUILayout.ExpandWidth(true)); if (((e.type == EventType.MouseMove && GUIUtility.GUIToScreenPoint(e.mousePosition) != lastMouseMovePosition) || e.type == EventType.MouseDown) && parent.selectedIndex != i && optionPosition.Contains(e.mousePosition)) { parent.selectedIndex = i; Repaint(); lastMouseMovePosition = GUIUtility.GUIToScreenPoint(e.mousePosition); } var optionIsSelected = false; if (i == parent.selectedIndex) { optionIsSelected = true; selectedOptionPosition = optionPosition; } // Clipping if (optionPosition.yMax < parent.scroll.y || optionPosition.yMin > parent.scroll.y + levelPosition.height) { continue; } EditorGUI.BeginDisabledGroup(node.option.mode == FuzzyOptionMode.Branch && node.hasChildren == false); node.EnsureDrawable(); if (e.type == EventType.Repaint) { using (LudiqGUI.color.Override(node.dim ? LudiqGUI.color.value.WithAlphaMultiplied(0.66f) : LudiqGUI.color.value)) { if (node.option is FuzzySeparator) { Styles.separator.Draw(optionPosition, node.label, false, false, false, false); var linePosition = new Rect(optionPosition.x, optionPosition.yMax - 1, optionPosition.width, 1); Styles.separatorLine.Draw(linePosition, GUIContent.none, false, false, false, false); } else { Styles.optionBackground.Draw(optionPosition, GUIContent.none, false, false, optionIsSelected, optionIsSelected); float x = Styles.optionBackground.padding.left; var spaced = false; foreach (var icon in node.icons) { if (icon == null) { continue; } var iconPosition = new Rect ( optionPosition.x + x, optionPosition.y + Styles.optionBackground.padding.top, IconSize.Small, IconSize.Small ); GUI.DrawTexture(iconPosition, icon[IconSize.Small]); x += IconSize.Small; x += Styles.spaceBetweenIcons; spaced = true; } if (spaced) { x -= Styles.spaceBetweenIcons; x += Styles.spaceAfterIcons; } var foregroundPosition = optionPosition; foregroundPosition.x += x; foregroundPosition.width -= x; Styles.optionForeground.Draw(foregroundPosition, node.label, false, false, optionIsSelected, optionIsSelected); } } } var right = optionPosition.xMax; if (node.option.mode == FuzzyOptionMode.Branch) { right -= 13; var rightArrowPosition = new Rect(right, optionPosition.y + 4, 13, 13); if (e.type == EventType.Repaint) { Styles.rightArrow.Draw(rightArrowPosition, false, false, false, false); } } if (node.option.mode == FuzzyOptionMode.Leaf && tree.selected.Contains(node.option.value) && !isSeparator) { right -= 16; var checkPosition = new Rect(right, optionPosition.y + 4, 12, 12); if (e.type == EventType.Repaint) { Styles.check.Draw(checkPosition, false, false, false, false); } } EditorGUI.EndDisabledGroup(); if (tree.favorites != null && tree.CanFavorite(node.option) && (optionIsSelected || tree.favorites.Contains(node.option))) { right -= 19; var starPosition = new Rect(right, optionPosition.y + 2, IconSize.Small, IconSize.Small); EditorGUI.BeginChangeCheck(); var isFavorite = tree.favorites.Contains(node.option); isFavorite = GUI.Toggle(starPosition, isFavorite, GUIContent.none, Styles.star); if (EditorGUI.EndChangeCheck()) { if (isFavorite) { tree.favorites.Add(node.option); } else { tree.favorites.Remove(node.option); } tree.OnFavoritesChange(); ExecuteTask(() => UpdateFavorites()); } } if (e.type == EventType.MouseUp && e.button == (int)MouseButton.Left && optionPosition.Contains(e.mousePosition)) { e.Use(); parent.selectedIndex = i; SelectChild(node); } } EditorGUIUtility.SetIconSize(default(Vector2)); GUILayout.EndScrollView(); if (scrollToSelected && e.type == EventType.Repaint) { scrollToSelected = false; var lastRect = GUILayoutUtility.GetLastRect(); if (selectedOptionPosition.yMax - lastRect.height > parent.scroll.y) { var scroll = parent.scroll; scroll.y = selectedOptionPosition.yMax - lastRect.height; parent.scroll = scroll; Repaint(); } if (selectedOptionPosition.y < parent.scroll.y) { var scroll = parent.scroll; scroll.y = selectedOptionPosition.y; parent.scroll = scroll; Repaint(); } } } GUILayout.EndArea(); }
protected override void OnContentGUI() { var previousIconSize = EditorGUIUtility.GetIconSize(); EditorGUIUtility.SetIconSize(new Vector2(IconSize.Small, IconSize.Small)); var explanation = "Bolt plugins can automatically display documentation for Unity methods in graphs and in the inspector. "; explanation += "To also include documentation from your custom code and from third-party plugins, we need to generate it first."; GUILayout.BeginVertical(Styles.background, GUILayout.ExpandHeight(true)); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); GUILayout.Label(explanation, Styles.explanationLabel, GUILayout.MaxWidth(350)); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); EditorGUI.BeginDisabledGroup(queue.Count > 0); if (GUILayout.Button("Generate Documentation", Styles.generateButton)) { foreach (var step in steps) { step.Reset(); } foreach (var step in steps) { queue.Enqueue(step); } queue.Peek().Generate(); generating = true; } EditorGUI.EndDisabledGroup(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); LudiqGUI.BeginVertical(); foreach (var step in steps) { step.OnGUI(); LudiqGUI.Space(Styles.spaceBetweenSteps); } LudiqGUI.EndVertical(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.FlexibleSpace(); EditorGUI.BeginDisabledGroup(generating); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); if (GUILayout.Button(completeLabel, Styles.nextButton)) { Complete(); } LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); EditorGUI.EndDisabledGroup(); LudiqGUI.FlexibleSpace(); GUILayout.Label("You can regenerate documentation at any time from the tools menu.", EditorStyles.centeredGreyMiniLabel); LudiqGUI.EndVertical(); EditorGUIUtility.SetIconSize(previousIconSize); }
private void Draw() { if (Event.current.type == EventType.Layout) { UpdateDrawnElements(); } LudiqGUI.BeginVertical(Styles.background); LudiqGUI.BeginHorizontal(Styles.tipArea, GUILayout.Height(Styles.tipHeight)); LudiqGUI.BeginVertical(); LudiqGUI.FlexibleSpace(); LudiqGUI.LoaderLayout(); LudiqGUI.FlexibleSpace(); LudiqGUI.EndVertical(); if (drawnTip != null) { LudiqGUI.Space(Styles.spaceBetweenSpinnerAndTip); LudiqGUI.BeginVertical(); LudiqGUI.FlexibleSpace(); GUILayout.Label("<b>Tip:</b> " + drawnTip, Styles.tip); LudiqGUI.FlexibleSpace(); LudiqGUI.EndVertical(); } LudiqGUI.EndHorizontal(); if (drawnTasks.Count > 0) { var first = true; foreach (var task in drawnTasks) { if (!first) { GUILayout.Space(Styles.spaceBetweenTasks); } if (Event.current.type == EventType.Layout) { task.animatedRatio = Mathf.MoveTowards(task.animatedRatio, task.ratio, progressAnimationSpeed * repaintDeltaTime); } LudiqGUI.BeginVertical(Styles.task); GUILayout.Label(task.title + $" <color=#{ColorPalette.unityForegroundDim.ToHexString()}>({task.elapsed.TotalSeconds:###0.0} seconds)</color>", Styles.taskTitle); var progressBarPosition = EditorGUILayout.GetControlRect(); EditorGUI.ProgressBar(progressBarPosition, task.animatedRatio, null); if (task.stepsHaveStarted) { var currentItemPosition = new Rect ( progressBarPosition.x + (int)(task.animatedRatio * progressBarPosition.width) - 1, progressBarPosition.y, Mathf.Max(3, Mathf.CeilToInt((1f / task.totalSteps) * (progressBarPosition.width)) + 1), progressBarPosition.height ); if (Event.current.type == EventType.Repaint) { var opacity = Mathf.Lerp(0.25f, 0.25f, (Mathf.Sin((float)EditorApplication.timeSinceStartup * 3) + 1) / 2); using (LudiqGUI.color.Override(LudiqGUI.color.value.WithAlphaMultiplied(opacity))) { Styles.currentItemFill.Draw(currentItemPosition, false, false, false, false); } } LudiqGUI.DrawEmptyRect(currentItemPosition, Styles.currentItemBorder); if (Event.current.type == EventType.Repaint) { Styles.currentItemText.Draw(progressBarPosition, new GUIContent(task.currentStepLabel), false, false, false, false); } } LudiqGUI.EndVertical(); first = false; } } LudiqGUI.EndVertical(); }
protected void DrawIconDisplay(GUIStyle style) { if (style == null) { DrawCenteredMessage("No icon selected"); LudiqGUI.FlexibleSpace(); DrawHelpIcon(); return; } var iconTexture = style.normal.background; LudiqGUI.BeginVertical(); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); GUILayout.Label(style.name, EditorStyles.whiteLargeLabel); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); LudiqGUI.BeginHorizontal(); LudiqGUI.FlexibleSpace(); GUILayout.Label("Normal"); LudiqGUI.FlexibleSpace(); LudiqGUI.EndHorizontal(); float iconOffset = 45; var iconWidth = iconTexture.width * _drawScale; var iconHeight = iconTexture.height * _drawScale; var sidePanelWidth = CalculateSidePanelWidth(); GUI.DrawTexture(new Rect((sidePanelWidth - iconWidth) * 0.5f, iconOffset, iconWidth, iconHeight), iconTexture, ScaleMode.StretchToFill); LudiqGUI.Space(iconHeight + 10); LudiqGUI.BeginHorizontal(); if (GUILayout.Toggle(_drawScale == 1.0f, "1x", EditorStyles.miniButtonLeft)) { _drawScale = 1.0f; } if (GUILayout.Toggle(_drawScale == 1.5f, "1.5x", EditorStyles.miniButtonMid)) { _drawScale = 1.5f; } if (GUILayout.Toggle(_drawScale == 2.0f, "2x", EditorStyles.miniButtonRight)) { _drawScale = 2.0f; } LudiqGUI.EndHorizontal(); LudiqGUI.Space(10); DrawIconStyleState(style.active, "Active"); DrawIconStyleState(style.hover, "Hover"); DrawIconStyleState(style.focused, "Focused"); DrawIconStyleState(style.onNormal, "On Normal"); DrawIconStyleState(style.onActive, "On Active"); DrawIconStyleState(style.onHover, "On Hover"); DrawIconStyleState(style.onFocused, "On Focused"); LudiqGUI.Space(10); EditorGUILayout.LabelField($"Width: {iconTexture.width}px"); EditorGUILayout.LabelField($"Height: {iconTexture.height}px"); LudiqGUI.FlexibleSpace(); DrawHelpIcon(); LudiqGUI.EndVertical(); }