Ejemplo n.º 1
0
        /// <summary>
        ///     Unknown type, read only
        /// </summary>
        public void DrawUnknownField(PropSettingEntry setting)
        {
            // Try to use user-supplied converters
            if (setting.ObjToStr != null && setting.StrToObj != null)
            {
                var text   = setting.ObjToStr(setting.Get());
                var result = GUILayout.TextField(text);
                if (result != text)
                {
                    setting.Set(setting.StrToObj(result));
                }
                return;
            }

            // Fall back to slow/less reliable method
            var value = setting.Get()?.ToString() ?? "NULL";

            if (CanCovert(value, setting.SettingType))
            {
                var result = GUILayout.TextField(value);
                if (result != value)
                {
                    setting.Set(Convert.ChangeType(result, setting.SettingType));
                }
            }
            else
            {
                GUILayout.TextArea(value);
            }
        }
Ejemplo n.º 2
0
        public void DrawRangeField(PropSettingEntry setting, AcceptableValueRangeAttribute range)
        {
            var value      = setting.Get();
            var converted  = (float)Convert.ToDouble(value);
            var leftValue  = (float)Convert.ToDouble(range.MinValue);
            var rightValue = (float)Convert.ToDouble(range.MaxValue);

            var result = GUILayout.HorizontalSlider(converted, leftValue, rightValue, GUILayout.ExpandWidth(true));

            if (Math.Abs(result - converted) > Mathf.Abs(rightValue - leftValue) / 1000)
            {
                var newValue = Convert.ChangeType(result, value.GetType());
                setting.Set(newValue);
            }

            if (range.ShowAsPercentage)
            {
                DrawCenteredLabel(
                    Mathf.Round(100 * Mathf.Abs(result - leftValue) / Mathf.Abs(rightValue - leftValue)) + "%",
                    GUILayout.Width(50));
            }
            else
            {
                DrawCenteredLabel(value.ToString(), GUILayout.Width(50));
            }
        }
Ejemplo n.º 3
0
        public void DrawBoolField(PropSettingEntry setting)
        {
            var boolVal = (bool)setting.Get();
            var result  = GUILayout.Toggle(boolVal, boolVal ? "Enabled" : "Disabled", GUILayout.ExpandWidth(true));

            if (result != boolVal)
            {
                setting.Set(result);
            }
        }
Ejemplo n.º 4
0
        public void DrawKeyboardShortcut(PropSettingEntry setting)
        {
            var shortcut = (KeyboardShortcut)setting.Get();

            GUILayout.BeginHorizontal();
            {
                if (CurrentKeyboardShortcutToSet == setting)
                {
                    GUILayout.Label("Press any key combination", GUILayout.ExpandWidth(true));
                    GUIUtility.keyboardControl = -1;

                    foreach (var key in KeysToCheck)
                    {
                        if (Input.GetKeyUp(key))
                        {
                            shortcut.MainKey   = key;
                            shortcut.Modifiers = KeysToCheck.Where(Input.GetKey).OrderBy(x => x.ToString()).ToArray();

                            CurrentKeyboardShortcutToSet = null;
                            break;
                        }
                    }

                    if (GUILayout.Button("Cancel", GUILayout.ExpandWidth(false)))
                    {
                        CurrentKeyboardShortcutToSet = null;
                    }
                }
                else
                {
                    if (GUILayout.Button(shortcut.ToString(), GUILayout.ExpandWidth(true)))
                    {
                        CurrentKeyboardShortcutToSet = setting;
                    }

                    if (GUILayout.Button("Clear", GUILayout.ExpandWidth(false)))
                    {
                        setting.Set(KeyboardShortcut.Empty);
                        CurrentKeyboardShortcutToSet = null;
                    }
                }
            }
            GUILayout.EndHorizontal();
        }
Ejemplo n.º 5
0
        public void DrawComboboxField(PropSettingEntry setting, IList list)
        {
            var buttonText = new GUIContent(setting.Get().ToString());
            var dispRect   = GUILayoutUtility.GetRect(buttonText, GUI.skin.button, GUILayout.ExpandWidth(true));

            if (!_comboBoxCache.TryGetValue(setting, out var box))
            {
                box = new ComboBox(dispRect, buttonText,
                                   list.Cast <object>().Select(x => new GUIContent(x.ToString())).ToArray(), GUI.skin.button);
                _comboBoxCache[setting] = box;
            }
            else
            {
                box.Rect          = dispRect;
                box.ButtonContent = buttonText;
            }

            var id = box.Show();

            if (id >= 0 && id < list.Count)
            {
                setting.Set(list[id]);
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 ///     Unknown type, read only
 /// </summary>
 public void DrawUnknownField(PropSettingEntry setting)
 {
     GUILayout.TextArea(setting.Get()?.ToString() ?? "NULL");
 }