Show enum fields in Edit mode

This commit is contained in:
Simon Lübeß
2023-07-28 00:07:10 +02:00
parent 1254d01545
commit f39acdadb3
5 changed files with 143 additions and 36 deletions
@@ -693,8 +693,7 @@ namespace GlitchyEditor.EditWindows
field.SetData(value);
case .Enum:
// TODO!
ShowEnumSelector(field, fieldName, scriptClass);
//case .String:
// TODO!
@@ -716,6 +715,33 @@ namespace GlitchyEditor.EditWindows
}
}
private static void ShowEnumSelector(ScriptFieldInstance* field, StringView fieldName, ScriptClass scriptClass)
{
ScriptField scriptField = scriptClass.Fields[fieldName];
SharpEnum enumType = scriptField.SharpType as SharpEnum;
Log.EngineLogger.Assert(enumType != null, "Enum must have a SharpEnum!");
// Simply get Enum as a uint64
var fieldValue = field.GetData<uint64>();
StringView valueName = "<Invalid Value>";
if (enumType.Values.TryGetValue(fieldValue, let enumValue))
valueName = enumValue.Name;
if (ImGui.BeginCombo(fieldName.Ptr, valueName.Ptr))
{
for (let (entryValue, enumEntry) in enumType.Values)
{
if (ImGui.Selectable(enumEntry.Name.Ptr, fieldValue == entryValue))
field.SetData(entryValue);
}
ImGui.EndCombo();
}
}
private static Entity? ShowEntitySelector()
{
static char8[128] entitySearch = .();