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);
        }
示例#2
0
        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();
     }
 }
示例#4
0
            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();
                    }
                }
            }
示例#5
0
        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);
            }
        }
示例#8
0
        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);
                    }
                }
            }
        }