Files
RebootKit/Editor/PropertyDrawers/SerializableGuidDrawer.cs
2025-07-30 05:51:39 +02:00

34 lines
1.3 KiB
C#
Executable File

using System.Text;
using RebootKit.Engine.Foundation;
using UnityEditor;
using UnityEngine;
namespace RebootKit.Editor.PropertyDrawers {
[CustomPropertyDrawer(typeof(SerializableGuid))]
public class SerializableGuidDrawer : PropertyDrawer {
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
EditorGUI.BeginProperty(position, label, property);
EditorGUILayout.TextField(label, BuildGuidString(FindGuidParts(property)));
EditorGUI.EndProperty();
}
public SerializedProperty[] FindGuidParts(SerializedProperty property) {
SerializedProperty[] res = {
property.FindPropertyRelative("A"),
property.FindPropertyRelative("B"),
property.FindPropertyRelative("C"),
property.FindPropertyRelative("D")
};
return res;
}
public string BuildGuidString(SerializedProperty[] parts) {
StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0:X8}", parts[0].uintValue);
sb.AppendFormat("{0:X8}", parts[1].uintValue);
sb.AppendFormat("{0:X8}", parts[2].uintValue);
sb.AppendFormat("{0:X8}", parts[3].uintValue);
return sb.ToString();
}
}
}