public bool MoveNext() { if (first) { first = false; } else { field = field.Next; } UField currentField = field; UStruct currentStruct = unrealStruct; while (currentStruct != null) { while (currentField != null) { UClass fieldClass = currentField.GetClass(); if (fieldClass.HasAllCastFlags(typeClass.ClassCastFlags) && (includeDeprecated || !fieldClass.HasAllCastFlags(EClassCastFlags.UProperty) || !(currentField as UProperty).HasAllPropertyFlags(EPropertyFlags.Deprecated))) { unrealStruct = currentStruct; field = currentField; return(true); } currentField = currentField.Next; } if (includeInterface) { // We shouldn't be able to get here for non-classes UClass currentClass = currentStruct as UClass; ++interfaceIndex; FImplementedInterface[] interfaces = currentClass.Interfaces; if (interfaces != null && interfaceIndex < interfaces.Length) { UClass interfaceClass = interfaces[interfaceIndex].InterfaceClass; currentField = GetField(interfaceClass); continue; } } if (includeSuper) { currentStruct = currentStruct.GetInheritanceSuper(); if (currentStruct != null) { currentField = GetField(currentStruct); interfaceIndex = -1; continue; } } break; } unrealStruct = currentStruct; field = currentField; return(field != null); }