From 86b09c173b005cc45fc6b64b973344b3d451f3a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Sat, 17 Feb 2024 23:32:21 +0100 Subject: [PATCH] Print pretty names and support LabelAttribute for enum cases --- ScriptCore/Editor/EntityEditor.cs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/ScriptCore/Editor/EntityEditor.cs b/ScriptCore/Editor/EntityEditor.cs index 32ee1e8..cba0836 100644 --- a/ScriptCore/Editor/EntityEditor.cs +++ b/ScriptCore/Editor/EntityEditor.cs @@ -376,7 +376,31 @@ internal class EntityEditor { foreach (object enumValue in Enum.GetValues(fieldType)) { - if (ImGui.Selectable(enumValue.ToString(), enumValue == reference)) + string enumValueName = enumValue.ToString(); + + FieldInfo? fieldInfo = fieldType.GetField(enumValueName); + + string enumValueLabel; + + if (fieldInfo != null) + { + LabelAttribute label = (LabelAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(LabelAttribute)); + + if (label != null) + { + enumValueLabel = label.Label ?? enumValueName; + } + else + { + enumValueLabel = enumValueName.ToPrettyName(); + } + } + else + { + enumValueLabel = enumValueName.ToPrettyName(); + } + + if (ImGui.Selectable(enumValueLabel, enumValue == reference)) { newValue = enumValue; }