Example #1
0
        /// <summary>
        /// Returns whether this member can be used in the settings menu. Also returns the settings field attribute data if the member has one
        /// </summary>
        /// <param name="memberInfo">The member to check</param>
        /// <param name="attribute">The settings field information if the member has one</param>
        /// <returns></returns>
        static bool MemberIsUsable(MemberInfo memberInfo, out SettingFieldAttribute attribute)
        {
            bool hasAttribute = HasAttribute(memberInfo, out attribute);

            if (memberInfo is FieldInfo)
            {
                var field = (FieldInfo)memberInfo;
                if (hasAttribute)
                {
                    return(ShouldBeEnabled(attribute.IsEnabled));
                    //return true;
                }
                else if ((field.IsPublic || (field.IsPrivate && field.IsDefined(typeof(SerializeField), false) && !field.IsDefined(typeof(HideInInspector), false))) && !field.IsStatic && !field.IsDefined(typeof(NonSerializedAttribute), false))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else if (memberInfo is PropertyInfo)
            {
                var property = (PropertyInfo)memberInfo;
                return(property.GetGetMethod(true) != null && property.GetSetMethod(true) != null && hasAttribute && ShouldBeEnabled(attribute.IsEnabled));
            }
            else if (memberInfo is MethodInfo)
            {
                //return hasAttribute;
                return(hasAttribute && ShouldBeEnabled(attribute.IsEnabled));
            }

            return(false);
        }
Example #2
0
        void CreateElements(Panel panel)
        {
            var members   = new List <MemberInfo>();
            var panelType = panel.GetType();

            members.AddRange(panelType.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance));
            members.Sort(new MemberInfoSorter());

            foreach (var member in members)
            {
                SettingFieldAttribute settings = null;
                if (MemberIsUsable(member, out settings))
                {
                    var name        = settings != null && settings.DisplayName != null ? settings.DisplayName : StringUtilities.Prettify(member.Name);
                    var description = GetDescriptionOfMember(member);
                    AddMember(panel, member, name, description);
                    //var instance = AddMember(panel, member, name, description);
                    //instance.Visible = ShouldBeEnabled(settings.IsEnabled);
                }
            }
            foreach (var element in currentElements)
            {
                element.UpdateDisplayValue();
            }
        }
Example #3
0
        /// <summary>
        /// Gets the display name of the member
        /// </summary>
        /// <param name="memberInfo">The member to check</param>
        /// <returns>Returns the display name of the member. Returns null if <paramref name="memberInfo"/> is null. </returns>
        public static string GetDisplayNameOfMember(MemberInfo memberInfo)
        {
            if (memberInfo == null)
            {
                return(null);
            }
            SettingFieldAttribute settings = null;

            if (HasAttribute(memberInfo, out settings) && settings.DisplayName != null)
            {
                return(settings.DisplayName);
            }
            else
            {
                return(StringUtilities.Prettify(memberInfo.Name));
            }
        }