Inheritance: PropertyAttribute
コード例 #1
0
ファイル: GUIPropertiesUtils.cs プロジェクト: pshtif/Dash
        static public bool PropertyField(FieldInfo p_fieldInfo, Object p_object, IReferencable p_reference, FieldInfo p_parentInfo = null)
        //string p_name = null, bool p_drawLabel = true)
        {
            if (IsHidden(p_fieldInfo))
            {
                return(false);
            }

            if (!MeetsDependencies(p_fieldInfo, p_object))
            {
                return(false);
            }

            FieldInfo nameInfo = p_parentInfo != null ? p_parentInfo : p_fieldInfo;

            LabelAttribute labelAttribute = nameInfo.GetCustomAttribute <LabelAttribute>();
            string         nameString     = ObjectNames.NicifyVariableName(nameInfo.Name);

            nameString = labelAttribute == null
                ? nameString.Substring(0, 1).ToUpper() + nameString.Substring(1)
                : labelAttribute.Label;

            TooltipAttribute tooltipAttribute = nameInfo.GetCustomAttribute <TooltipAttribute>();
            var name = tooltipAttribute == null ? new GUIContent(nameString) : new GUIContent(nameString, tooltipAttribute.tooltip);

            if (IsParameterProperty(p_fieldInfo))
            {
                return(ParameterProperty(p_fieldInfo, p_object, name, p_reference));
            }

            if (p_parentInfo == null && IsExpressionProperty(p_fieldInfo))
            {
                return(ExpressionProperty(p_fieldInfo, p_object, name, p_reference));
            }

            if (IsPopupProperty(p_fieldInfo))
            {
                return(PopupProperty(p_fieldInfo, p_object, name));
            }

            if (p_fieldInfo.FieldType == typeof(Type))
            {
                return(SupportedTypeProperty(p_fieldInfo, p_object, name));
            }

            if (IsEnumProperty(p_fieldInfo))
            {
                return(EnumProperty(p_fieldInfo, p_object, name));
            }

            if (IsUnityObjectProperty(p_fieldInfo))
            {
                return(UnityObjectProperty(p_fieldInfo, p_object, name));
            }

            if (IsExposedReferenceProperty(p_fieldInfo))
            {
                return(ExposedReferenceProperty(p_fieldInfo, p_object, name, p_reference));
            }

            return(ValueProperty(p_fieldInfo, p_object, name, p_reference, p_parentInfo));
        }