コード例 #1
0
        /// <summary>
        /// Returns true if the property address is required by generated code
        /// </summary>
        private bool RequiresNativePropertyField(UProperty property)
        {
            if (!Settings.LazyFunctionParamInitDestroy && property.GetOwnerStruct().IsA <UFunction>())
            {
                // We need the property address to call InitializeValue / DestroyValue
                if (!property.HasAllPropertyFlags(EPropertyFlags.ZeroConstructor | EPropertyFlags.NoDestructor))
                {
                    return(true);
                }
                return(true);
            }

            if (property.IsFixedSizeArray)
            {
                return(true);
            }
            switch (property.PropertyType)
            {
            case EPropertyType.Enum:
            case EPropertyType.Bool:
            case EPropertyType.Array:
            case EPropertyType.Set:
            case EPropertyType.Map:
                return(true);

            default:
                UNumericProperty numericProperty = property as UNumericProperty;
                if ((numericProperty != null && numericProperty.IsEnum && numericProperty.GetIntPropertyEnum() != null))
                {
                    return(true);
                }
                break;
            }

            return(false);
        }