static void ShortcutSettings(string searchContext) { if (!string.IsNullOrEmpty(searchContext)) { return; } s_Shortcuts = ProBuilderEditor.s_Shortcuts; if (s_Shortcuts == null || s_Shortcuts.Length < 1) { ProBuilderEditor.s_Shortcuts.SetValue(s_Shortcuts = Shortcut.DefaultShortcuts().ToArray(), true); } GUILayout.BeginHorizontal(); GUILayout.BeginVertical(GUILayout.Width(EditorGUIUtility.labelWidth)); ShortcutSelectPanel(); GUILayout.EndVertical(); GUILayout.BeginVertical(); ShortcutEditPanel(); GUILayout.EndVertical(); GUILayout.EndHorizontal(); SettingsGUILayout.DoResetContextMenuForLastRect(ProBuilderEditor.s_Shortcuts); }
static void ConditionalValueGUI(string searchContext) { EditorGUI.BeginChangeCheck(); s_NumberWithSlider.value = SettingsGUILayout.SettingsSlider("Number With Slider", s_NumberWithSlider, 0, 10, searchContext); var foo = s_Foo.value; using (new SettingsGUILayout.IndentedGroup("Foo Class")) { EditorGUI.BeginChangeCheck(); foo.intValue = SettingsGUILayout.SearchableIntField("Int Value", foo.intValue, searchContext); foo.stringValue = SettingsGUILayout.SearchableTextField("String Value", foo.stringValue, searchContext); // Because FooClass is a reference type, we need to apply the changes to the backing repository (SetValue // would also work here). if (EditorGUI.EndChangeCheck()) { s_Foo.ApplyModifiedProperties(); } } SettingsGUILayout.DoResetContextMenuForLastRect(s_Foo); if (EditorGUI.EndChangeCheck()) { MySettingsManager.Save(); } }
private static void ColorDefaults(string searchContext) { EditorGUI.BeginChangeCheck(); GUILayout.Space(2f); colorList.DoLayoutList(); SettingsGUILayout.DoResetContextMenuForLastRect(uvColorDefaults); if (EditorGUI.EndChangeCheck()) { uvColorDefaults.ApplyModifiedProperties(); } }
private static void DrawCloudBuildsBlock(string searchContext) { using (EditorGUI.ChangeCheckScope changeCheckScope = new EditorGUI.ChangeCheckScope()) { AppendBuildNumberToVersionSetting.value = SettingsGUILayout.SettingsToggle(AppendBuildNumberToVersionLabel, AppendBuildNumberToVersionSetting, searchContext); using (new EditorGUI.IndentLevelScope()) { using (new EditorGUI.DisabledScope(!AppendBuildNumberToVersionSetting)) { if (BuildManagerUtility.TryMatchSearch(searchContext, BuildNumberExpressionLabel.text)) { BuildNumberExpressionSetting.value = EditorGUILayout.TextField(BuildNumberExpressionLabel, BuildNumberExpressionSetting); SettingsGUILayout.DoResetContextMenuForLastRect(BuildNumberExpressionSetting); Rect position = EditorGUILayout.GetControlRect(true); position.xMin += EditorGUIUtility.labelWidth; if (GUI.Button(position, "Validate")) { string buildNumber = Random.Range(1, 100).ToString(); string original = BuildNumberExpressionSetting; string replaced = original.Replace(BuildNumberPlaceholder, buildNumber); if (ExpressionEvaluator.Evaluate(replaced, out int result)) { Debug.Log($"Expression ({original}) is valid! Validated with Build Number {buildNumber}: ({replaced})={result}"); } else { Debug.LogError($"({original}) is not a valid expression!"); } } } } } UseBuildStartTimeAsUtcNowSetting.value = SettingsGUILayout.SettingsToggle(UseBuildStartTimeAsUtcNowLabel, UseBuildStartTimeAsUtcNowSetting, searchContext); SumBuildNumberToBundleVersionCodeSetting.value = SettingsGUILayout.SettingsToggle(SumBuildNumberToBundleVersionCodeLabel, SumBuildNumberToBundleVersionCodeSetting, searchContext); if (changeCheckScope.changed) { Settings.Save(); } } }
static void UnwrapSettingDefaults(string searchContext) { Styles.Init(); var isSearching = !string.IsNullOrEmpty(searchContext); if (!isSearching) { Styles.unwrapSettingsFoldout = EditorGUILayout.Foldout(Styles.unwrapSettingsFoldout, "Lightmap UVs Settings"); } if (isSearching || Styles.unwrapSettingsFoldout) { EditorGUI.BeginChangeCheck(); var unwrap = (UnwrapParameters)s_UnwrapParameters; using (new SettingsGUILayout.IndentedGroup()) { unwrap.hardAngle = SettingsGUILayout.SearchableSlider(Styles.hardAngle, unwrap.hardAngle, 1f, 180f, searchContext); unwrap.packMargin = SettingsGUILayout.SearchableSlider(Styles.packMargin, unwrap.packMargin, 1f, 64f, searchContext); unwrap.angleError = SettingsGUILayout.SearchableSlider(Styles.angleError, unwrap.angleError, 1f, 75f, searchContext); unwrap.areaError = SettingsGUILayout.SearchableSlider(Styles.areaError, unwrap.areaError, 1f, 75f, searchContext); if (!isSearching) { GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Reset", Styles.miniButton)) { unwrap.Reset(); } GUILayout.EndHorizontal(); } } SettingsGUILayout.DoResetContextMenuForLastRect(s_UnwrapParameters); if (EditorGUI.EndChangeCheck()) { s_UnwrapParameters.value = unwrap; } } }
internal static void DrawBoolStateField(string searchContext, GUIContent label, UserSetting <BoolState> userSetting, bool defaultValue, Action onChanged) { if (!TryMatchSearch(searchContext, label.text)) { return; } using (EditorGUI.ChangeCheckScope changeCheckScope = new EditorGUI.ChangeCheckScope()) { BoolState value = EditorGUILayout.Toggle(label, userSetting.value.GetOrDefault(defaultValue)) ? BoolState.True : BoolState.False; if (changeCheckScope.changed) { userSetting.value = value; onChanged?.Invoke(); } SettingsGUILayout.DoResetContextMenuForLastRect(userSetting); } }
internal static void DrawEnumField <T>(string searchContext, GUIContent label, UserSetting <T> userSetting, Action onChanged) where T : Enum { if (!TryMatchSearch(searchContext, label.text)) { return; } using (EditorGUI.ChangeCheckScope changeCheckScope = new EditorGUI.ChangeCheckScope()) { T value = (T)EditorGUILayout.EnumPopup(label, userSetting); if (changeCheckScope.changed) { userSetting.value = value; onChanged?.Invoke(); } SettingsGUILayout.DoResetContextMenuForLastRect(userSetting); } }
private static void DrawHeaderBlock(string searchContext) { if (BuildManagerUtility.TryMatchSearch(searchContext, ShowProjectSettingsLabel.text)) { if (GUILayout.Button(ShowProjectSettingsLabel)) { SettingsService.OpenProjectSettings(BuildManagerUtility.ProjectSettingsPath); } EditorGUILayout.Separator(); } using (EditorGUI.ChangeCheckScope changeCheckScope = new EditorGUI.ChangeCheckScope()) { if (BuildManagerUtility.TryMatchSearch(searchContext, OpenBuiltPlayerOptionsLabel.text)) { OpenBuiltPlayerOptionsSetting.value = (OpenBuiltPlayerOptions)EditorGUILayout.EnumFlagsField(OpenBuiltPlayerOptionsLabel, OpenBuiltPlayerOptionsSetting); SettingsGUILayout.DoResetContextMenuForLastRect(OpenBuiltPlayerOptionsSetting); } CreateStandardizedBuildOutputSetting.value = SettingsGUILayout.SettingsToggle(CreateStandardizedBuildOutputLabel, CreateStandardizedBuildOutputSetting, searchContext); if (changeCheckScope.changed) { Settings.Save(); } } using (new EditorGUI.DisabledScope(!CreateStandardizedBuildOutputSetting)) { using (EditorGUI.ChangeCheckScope changeCheckScope = new EditorGUI.ChangeCheckScope()) { using (new EditorGUI.IndentLevelScope()) { GroupByBuildNameSetting.value = SettingsGUILayout.SettingsToggle(GroupByBuildNameLabel, GroupByBuildNameSetting, searchContext); GroupByBuildTargetSetting.value = SettingsGUILayout.SettingsToggle(GroupByBuildTargetLabel, GroupByBuildTargetSetting, searchContext); if (changeCheckScope.changed) { Settings.Save(); } if (!BuildManagerUtility.TryMatchSearch(searchContext, StandardizedBuildOutputPathLabel.text) && !BuildManagerUtility.TryMatchSearch(searchContext, ChangeButtonLabel.text)) { return; } Rect position = EditorGUILayout.GetControlRect(); position = EditorGUI.PrefixLabel(position, StandardizedBuildOutputPathLabel); if (GUI.Button(position, ChangeButtonLabel, EditorStyles.miniButton)) { string value = EditorUtility.OpenFolderPanel("Builds folder location", Path.GetDirectoryName(StandardizedBuildOutputPath), Path.GetFileName(StandardizedBuildOutputPath)); if (string.IsNullOrEmpty(value) == false) { StandardizedBuildOutputPathSetting.SetValue(value, true); } } SettingsGUILayout.DoResetContextMenuForLastRect(StandardizedBuildOutputPathSetting); position = EditorGUILayout.GetControlRect(); if (Event.current.type == EventType.MouseUp && Event.current.button == 0 && position.Contains(Event.current.mousePosition)) { string path = Directory.Exists(StandardizedBuildOutputPath) ? StandardizedBuildOutputPath : Path.GetDirectoryName(Application.dataPath); Assert.IsFalse(string.IsNullOrWhiteSpace(path)); Process.Start(path); } string outputLabel = StandardizedBuildOutputPathSetting == DefaultStandardizedBuildOutputPath ? $"./{DefaultStandardizedBuildOutputPath}" : StandardizedBuildOutputPath; EditorGUI.LabelField(position, outputLabel, EditorStyles.miniLabel); SettingsGUILayout.DoResetContextMenuForLastRect(StandardizedBuildOutputPathSetting); } } } }