From 45bb3687622171a8f5a6872cdfa148ee667e0026 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Fri, 7 Mar 2025 00:12:09 -0600 Subject: [PATCH] from marauder: proper enumtable lookup --- .../source/gui/editor/guiInspectorTypes.cpp | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Engine/source/gui/editor/guiInspectorTypes.cpp b/Engine/source/gui/editor/guiInspectorTypes.cpp index 127ca86ce..6281d71d2 100644 --- a/Engine/source/gui/editor/guiInspectorTypes.cpp +++ b/Engine/source/gui/editor/guiInspectorTypes.cpp @@ -1525,16 +1525,24 @@ void GuiInspectorTypeBitMask32::setValue( StringTableEntry value ) if (mask == 0 && mask != -1) //zero we need to double check. -1 we know is all on { BitSet32 bitMask; - const EnumTable* tbl = mInspector->getInspectObject(0)->getClassRep()->getEnumTable(); - if (tbl) + const EngineEnumTable* table = mField->table; + if (!table) { - const U32 numEnums = tbl->getNumValues(); + ConsoleBaseType* type = ConsoleBaseType::getType(mField->type); + if (type && type->getEnumTable()) + table = type->getEnumTable(); + } + + if (table) + { + const EngineEnumTable& t = *table; + const U32 numEntries = t.getNumValues(); String inString(value); - for (U32 i = 0; i < numEnums; i++) + for (U32 i = 0; i < numEntries; i++) { - if (inString.find((*tbl)[i].getName()) != String::NPos) - bitMask.set(BIT(i)); + if (inString.find(t[i].getName()) != String::NPos) + bitMask.set(t[i].getInt()); } mask = bitMask.getMask(); }