Files
2025-03-15 12:37:32 +01:00

86 lines
3.0 KiB
C#

using UnityEditor;
using UnityEditor.UIElements;
using UnityEngine;
using UnityEngine.UIElements;
namespace SzafaKitEditor.VisualElements {
public class CVarPropertyField : VisualElement {
private SerializedProperty _cvarProperty;
private SerializedProperty _nameProperty;
private SerializedProperty _defaultValueProperty;
private SerializedProperty _defaultValueKindProperty;
private SerializedProperty _defaultValueNumberProperty;
private SerializedProperty _defaultValueStringProperty;
private VisualElement _details;
private bool _expand;
public CVarPropertyField(SerializedProperty cvarProperty) {
_cvarProperty = cvarProperty;
_nameProperty = _cvarProperty.FindPropertyRelative("Name");
_defaultValueProperty = _cvarProperty.FindPropertyRelative("DefaultValue");
_defaultValueKindProperty = _defaultValueProperty.FindPropertyRelative("Kind");
_defaultValueNumberProperty = _defaultValueProperty.FindPropertyRelative("NumberValue");
_defaultValueStringProperty = _defaultValueProperty.FindPropertyRelative("StringValue");
CreateInlineField();
CreateDetailsBox();
}
private void CreateInlineField() {
VisualElement box = new VisualElement() {
style = {
height = 48
}
};
Label nameLabel = new Label("NAME") {
style = {
unityFontStyleAndWeight = FontStyle.Bold,
backgroundColor = new Color(0.1f, 0.1f, 0.1f, 1.0f)
}
};
box.Add(nameLabel);
Button button = new(ToggleDetails) {
text = "...",
style = {
width = new StyleLength(new Length(64.0f, LengthUnit.Pixel)),
height = new StyleLength(new Length(64.0f, LengthUnit.Pixel)),
}
};
box.Add(button);
Add(box);
}
private void ToggleDetails() {
_expand = !_expand;
_details.visible = _expand;
_details.style.display = DisplayStyle.None;
}
private void CreateDetailsBox() {
PropertyField nameField = new(_nameProperty);
PropertyField defaultValueKindField = new(_defaultValueKindProperty);
PropertyField numberField = new(_defaultValueNumberProperty);
PropertyField stringField = new(_defaultValueStringProperty);
_details = new VisualElement() {
style = {
backgroundColor = new Color(0.1f, 0.1f, 0.1f, 1.0f),
}
};
_details.Add(nameField);
_details.Add(defaultValueKindField);
_details.Add(numberField);
_details.Add(stringField);
_details.visible = false;
_details.style.display = DisplayStyle.None;
Add(_details);
}
}
}