Ejemplo n.º 1
0
        /// <summary>
        /// Draws the object member.
        /// </summary>
        /// <param name="obj">Object.</param>
        static public void DrawObjectMember(object obj)
        {
            Type ty    = obj.GetType();
            var  types = ty.GetPublicMemberInfos();

            foreach (var t in types)
            {
                //t.SetValue (a, 1);

                var memberValue = t.GetValue(obj);
                var memberType  = memberValue == null ? t.type : memberValue.GetType();

                ITypeDrawer typeDrawer = InspectorDrawer.getTypeDrawer(t.type);
                if (typeDrawer != null)
                {
                    var newValue = typeDrawer.DrawAndGetNewValue(memberType, t.name, memberValue, t);

                    t.SetValue(obj, newValue);
                }
                else
                {
                    var shouldDraw = !Attribute.IsDefined(memberType, typeof(DontDrawComponentAttribute));
                    if (shouldDraw)
                    {
                        EditorGUILayout.LabelField(t.name, memberValue.ToString());

                        var indent = EditorGUI.indentLevel;
                        EditorGUI.indentLevel += 1;

                        EditorGUILayout.BeginVertical();
                        {
                            DrawObjectMember(memberValue);
                            //						foreach (var info in memberType.GetPublicMemberInfos()) {
                            //							var mValue = info.GetValue(memberValue);
                            ////							var mType = mValue == null ? info.type : mValue.GetType();
                            ////							DrawObjectMember(mType, info.name, mValue, memberValue, info.SetValue);
                            ////							if (memberType.IsValueType) {
                            ////								setValue(target, value);
                            ////							}
                            //							DrawObjectMember(mValue);
                            //						}
                        }
                        EditorGUILayout.EndVertical();

                        EditorGUI.indentLevel = indent;
                    }
                }
            }
        }
Ejemplo n.º 2
0
        static ComponentViewHelper()
        {
            Assembly assembly = typeof(ComponentViewHelper).Assembly;

            foreach (Type type in assembly.GetTypes())
            {
                if (!type.IsDefined(typeof(TypeDrawerAttribute)))
                {
                    continue;
                }

                ITypeDrawer iTypeDrawer = (ITypeDrawer)Activator.CreateInstance(type);
                typeDrawers.Add(iTypeDrawer);
            }
        }