/// <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); }
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(); } }
/// <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)); } }