protected void DrawDefaultProperties()
        {
            Type constraintType = m_target.GetType();
            var  fields         = from fi in constraintType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
                                  select fi;
            var properties = from pi in constraintType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
                             select pi;

            foreach (var field in fields)
            {
                BTPropertyAttribute        propertyAttribute = Attribute.GetCustomAttribute(field, typeof(BTPropertyAttribute)) as BTPropertyAttribute;
                BTIgnoreAttribute          ignoreAttribute   = Attribute.GetCustomAttribute(field, typeof(BTIgnoreAttribute)) as BTIgnoreAttribute;
                BTHideInInspectorAttribute hideAttribute     = Attribute.GetCustomAttribute(field, typeof(BTHideInInspectorAttribute)) as BTHideInInspectorAttribute;
                string label = BTEditorUtils.MakePrettyName(field.Name);

                if (ignoreAttribute != null || hideAttribute != null || (propertyAttribute == null && field.IsPrivate))
                {
                    continue;
                }

                if (field.FieldType == typeof(MemoryVar))
                {
                    DrawMemoryVarField(label, (MemoryVar)field.GetValue(m_target));
                }
                else
                {
                    object value = null;
                    if (TryToDrawField(label, field.GetValue(m_target), field.FieldType, out value))
                    {
                        field.SetValue(m_target, value);
                    }
                }
            }
            foreach (var property in properties)
            {
                BTPropertyAttribute        propertyAttribute = Attribute.GetCustomAttribute(property, typeof(BTPropertyAttribute)) as BTPropertyAttribute;
                BTIgnoreAttribute          ignoreAttribute   = Attribute.GetCustomAttribute(property, typeof(BTIgnoreAttribute)) as BTIgnoreAttribute;
                BTHideInInspectorAttribute hideAttribute     = Attribute.GetCustomAttribute(property, typeof(BTHideInInspectorAttribute)) as BTHideInInspectorAttribute;
                var    setterMethod = property.GetSetMethod(true);
                string label        = BTEditorUtils.MakePrettyName(property.Name);

                if (setterMethod == null || ignoreAttribute != null || hideAttribute != null || (propertyAttribute == null && setterMethod.IsPrivate))
                {
                    continue;
                }

                if (property.PropertyType == typeof(MemoryVar))
                {
                    DrawMemoryVarField(label, (MemoryVar)property.GetValue(m_target, null));
                }
                else
                {
                    object value = null;
                    if (TryToDrawField(label, property.GetValue(m_target, null), property.PropertyType, out value))
                    {
                        property.SetValue(m_target, value, null);
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Gets the name specified for use in serialization.
        /// </summary>
        /// <returns></returns>
        public static string GetMemberName(object value)
        {
            if (value == null)
            {
                return(null);
            }

            Type       type       = value.GetType();
            MemberInfo memberInfo = null;

            if (TCU.GetTypeInfo(type).IsEnum)
            {
                string name = Enum.GetName(type, value);
                if (String.IsNullOrEmpty(name))
                {
                    return(null);
                }
                memberInfo = TCU.GetTypeInfo(type).GetField(name);
            }
            else
            {
                memberInfo = value as MemberInfo;
            }

            if (MemberInfo.Equals(memberInfo, null))
            {
                throw new ArgumentException();
            }

#if WINDOWS_STORE
            BTPropertyAttribute attribute = memberInfo.GetCustomAttribute <BTPropertyAttribute>(true);
#else
            JsonMemberAttribute attribute = Attribute.GetCustomAttribute(memberInfo, typeof(JsonMemberAttribute)) as JsonMemberAttribute;
#endif
            return(attribute != null ? attribute.MemberName : null);
        }
Exemple #3
0
        protected void DrawDefaultProperties()
        {
            // show reference of class.
            string reference = BTNodeHelpBoxFactory.GetHelpString(m_target);

            if (!string.IsNullOrEmpty(reference))
            {
                EditorGUILayout.LabelField(reference, BTEditorStyle.HelpBox);
                //GUILayout.Space(2.5f);
                //DrawSeparator();
            }

            Type constraintType = m_target.GetType();
            var  fields         = from fi in constraintType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
                                  select fi;
            var properties = from pi in constraintType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
                             select pi;

            foreach (var field in fields)
            {
                BTPropertyAttribute        propertyAttribute = Attribute.GetCustomAttribute(field, typeof(BTPropertyAttribute)) as BTPropertyAttribute;
                BTIgnoreAttribute          ignoreAttribute   = Attribute.GetCustomAttribute(field, typeof(BTIgnoreAttribute)) as BTIgnoreAttribute;
                BTHideInInspectorAttribute hideAttribute     = Attribute.GetCustomAttribute(field, typeof(BTHideInInspectorAttribute)) as BTHideInInspectorAttribute;
                string label = BTEditorUtils.MakePrettyName(field.Name);

                if (ignoreAttribute != null || hideAttribute != null || (propertyAttribute == null && field.IsPrivate))
                {
                    continue;
                }

                if (field.FieldType == typeof(MemoryVar))
                {
                    DrawMemoryVarField(label, (MemoryVar)field.GetValue(m_target));
                }
                else
                {
                    object value = null;
                    if (TryToDrawField(label, field.GetValue(m_target), field.FieldType, out value))
                    {
                        field.SetValue(m_target, value);
                    }
                }
            }
            foreach (var property in properties)
            {
                BTPropertyAttribute        propertyAttribute = Attribute.GetCustomAttribute(property, typeof(BTPropertyAttribute)) as BTPropertyAttribute;
                BTIgnoreAttribute          ignoreAttribute   = Attribute.GetCustomAttribute(property, typeof(BTIgnoreAttribute)) as BTIgnoreAttribute;
                BTHideInInspectorAttribute hideAttribute     = Attribute.GetCustomAttribute(property, typeof(BTHideInInspectorAttribute)) as BTHideInInspectorAttribute;
                var    setterMethod = property.GetSetMethod(true);
                string label        = BTEditorUtils.MakePrettyName(property.Name);

                if (setterMethod == null || ignoreAttribute != null || hideAttribute != null || (propertyAttribute == null && setterMethod.IsPrivate))
                {
                    continue;
                }

                if (property.PropertyType == typeof(MemoryVar))
                {
                    DrawMemoryVarField(label, (MemoryVar)property.GetValue(m_target, null));
                }
                else
                {
                    object value = null;
                    if (TryToDrawField(label, property.GetValue(m_target, null), property.PropertyType, out value))
                    {
                        property.SetValue(m_target, value, null);
                    }
                }
            }
        }