Exemple #1
0
        private void _CollectSerializableMembers(Type type, List <MemberBase> members)
        {
            var flags = BindingFlags.Instance | BindingFlags.Public;

            var idDecalringTemplate = 0;

            foreach (var field in type.GetFields(flags))
            {
                if (!EditorMetaCommon.IsAutoCodeIgnore(field))
                {
                    var member = MemberBase.Create(field.FieldType, field.Name);
                    if (field.DeclaringType == typeof(Template))
                    {
                        members.Insert(idDecalringTemplate++, member);
                    }
                    else
                    {
                        members.Add(member);
                    }
                }
            }
        }
Exemple #2
0
        public static MemberBase Create(Type type, string name)
        {
            MemberBase member = null;

            if (null != type)
            {
                if (type.IsPrimitive)
                {
                    member = new PrimitiveMember();
                }
                else if (type == typeof(string))
                {
                    member = new StringMember();
                }
                else if (type == typeof(Vector2))
                {
                    member = new Vector2Member();
                }
                else if (type == typeof(Vector3))
                {
                    member = new Vector3Member();
                }
                else if (type == typeof(Vector4))
                {
                    member = new Vector4Member();
                }
                else if (type == typeof(Color))
                {
                    member = new ColorMember();
                }
                else if (type.IsArray)
                {
                    member = new ArrayMember();
                }
                else if (type.IsEnum)
                {
                    member = new EnumMember();
                }
                else if (type.IsGenericType)
                {
                    var genericTypeDefinition = type.GetGenericTypeDefinition();

                    if (typeof(List <>) == genericTypeDefinition)
                    {
                        member = new ListMember();
                    }
                }
                else if (EditorMetaCommon.IsMetadata(type))
                {
                    member = new MetadataMember();
                }
            }

            if (null != member)
            {
                member._type = type;
                member._name = name;
            }
            else
            {
                var text = string.Format("Invalid type found: typeof({0}) = {1}", name, type);
                Console.Error.WriteLine(text);
            }

            return(member);
        }