/// <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); } }
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)); } }
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); } }
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(); }
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]); } }
/// <summary> /// Unknown type, read only /// </summary> public void DrawUnknownField(PropSettingEntry setting) { GUILayout.TextArea(setting.Get()?.ToString() ?? "NULL"); }