61 lines
2.8 KiB
C#
61 lines
2.8 KiB
C#
using RebootKit.Engine.Services.Console;
|
|
using SzafaKitEditor.VisualElements;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace SzafaKitEditor.PropertyDrawers {
|
|
[CustomPropertyDrawer(typeof(CVar))]
|
|
public class CVarPropertyDrawer : PropertyDrawer {
|
|
private bool _expand;
|
|
|
|
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
|
|
SerializedProperty nameProperty = property.FindPropertyRelative("Name");
|
|
SerializedProperty descriptionProperty = property.FindPropertyRelative("Description");
|
|
SerializedProperty defaultValueProperty = property.FindPropertyRelative("DefaultValue");
|
|
SerializedProperty defaultValueKindProperty = defaultValueProperty.FindPropertyRelative("Kind");
|
|
SerializedProperty defaultValueNumberProperty = defaultValueProperty.FindPropertyRelative("NumberValue");
|
|
SerializedProperty defaultValueStringProperty = defaultValueProperty.FindPropertyRelative("StringValue");
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
|
|
GUILayout.Label(label, EditorStyles.miniBoldLabel);
|
|
|
|
nameProperty.stringValue = EditorGUILayout.TextField(nameProperty.stringValue);
|
|
|
|
bool isNumber = defaultValueKindProperty.enumValueIndex == (int) CVarValueKind.Number;
|
|
string kindLabel = isNumber ? "N" : "S";
|
|
|
|
if (isNumber) {
|
|
GUI.color = Color.cyan;
|
|
} else {
|
|
GUI.color = Color.green;
|
|
}
|
|
|
|
if (GUILayout.Button(kindLabel, GUILayout.Width(32))) {
|
|
defaultValueKindProperty.enumValueIndex = isNumber ? (int) CVarValueKind.String : (int) CVarValueKind.Number;
|
|
}
|
|
|
|
GUI.color = Color.white;
|
|
|
|
if (isNumber) {
|
|
defaultValueNumberProperty.doubleValue = EditorGUILayout.DoubleField(defaultValueNumberProperty.doubleValue);
|
|
} else {
|
|
defaultValueStringProperty.stringValue = EditorGUILayout.TextField(defaultValueStringProperty.stringValue);
|
|
}
|
|
|
|
if (GUILayout.Button(_expand ? "H" : "S", GUILayout.MaxWidth(24))) {
|
|
_expand = !_expand;
|
|
}
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
if (_expand) {
|
|
EditorGUILayout.PropertyField(nameProperty, new GUIContent("Name"));
|
|
EditorGUILayout.PropertyField(descriptionProperty, new GUIContent("Description"));
|
|
EditorGUILayout.PropertyField(defaultValueKindProperty, new GUIContent("Value Kind"));
|
|
EditorGUILayout.PropertyField(defaultValueNumberProperty, new GUIContent("Number"));
|
|
EditorGUILayout.PropertyField(defaultValueStringProperty, new GUIContent("String"));
|
|
}
|
|
}
|
|
}
|
|
} |