Beispiel #1
0
        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);
        }