From 37b80b225d0f63be11b4857c2fef9523fde23b33 Mon Sep 17 00:00:00 2001 From: olathuss Date: Tue, 25 Apr 2023 00:43:33 -0600 Subject: [PATCH] Struct Enums convert to/from DisplayName strings --- Source/LuaMachine/Private/LuaState.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Source/LuaMachine/Private/LuaState.cpp b/Source/LuaMachine/Private/LuaState.cpp index 847db019..a6399d3e 100644 --- a/Source/LuaMachine/Private/LuaState.cpp +++ b/Source/LuaMachine/Private/LuaState.cpp @@ -2113,7 +2113,12 @@ FLuaValue ULuaState::FromUProperty(void* Buffer, UProperty * Property, bool& bSu if (EnumProperty) { const uint8* EnumValue = EnumProperty->ContainerPtrToValuePtr(Buffer, Index); - return FLuaValue((int32)*EnumValue); + FString EnumString = EnumProperty->GetEnum()->GetDisplayNameTextByValue((int64)*EnumValue).ToString(); + if (EnumString.IsEmpty()) + { + return FLuaValue((int32)*EnumValue); + } + return EnumString; } #endif @@ -2297,6 +2302,14 @@ void ULuaState::ToUProperty(void* Buffer, UProperty * Property, FLuaValue Value, if (EnumProperty) { uint8* EnumValue = EnumProperty->ContainerPtrToValuePtr(Buffer, Index); + if (Value.Type == ELuaValueType::String) + { + *EnumValue = EnumProperty->GetEnum()->GetValueByNameString(Value.ToString()); + if (*EnumValue != INDEX_NONE) + { + return; + } + } *EnumValue = Value.ToInteger(); return; }