示例#1
0
文件: Convert.cs 项目: GF47/GRT
        public static string FormatToString(UnityStructs type, object value, string format)
        {
            string result = string.Empty;

            switch (type)
            {
            case UnityStructs.String:
                result = (string)value;
                break;

            case UnityStructs.Boolean:
                result = ((bool)value).ToString();
                break;

            case UnityStructs.Int32:
                result = ((int)value).ToString();
                break;

            case UnityStructs.Single:
                result = ((float)value).ToString(format);
                break;

            case UnityStructs.Double:
                result = ((double)value).ToString(format);
                break;

            case UnityStructs.Vector2:
                Vector2 vector2 = (Vector2)value;
                result = vector2.ToString(format);
                break;

            case UnityStructs.Vector3:
                Vector3 vector3 = (Vector3)value;
                result = vector3.ToString(format);
                break;

            case UnityStructs.Vector4:
                Vector4 vector4 = (Vector4)value;
                result = vector4.ToString(format);
                break;

            case UnityStructs.Color:
                Color32 color = (Color)value;
                result = color.ToString(format);
                break;

            case UnityStructs.Color32:
                Color32 color32 = (Color32)value;
                result = color32.ToString(format);
                break;

            case UnityStructs.Rect:
                Rect rect = (Rect)value;
                result = rect.ToString(format);
                break;
            }
            return(result);
        }
示例#2
0
文件: Convert.cs 项目: GF47/GRT
        public static object ConvertTo(UnityStructs type, string value)
        {
            object result = null;

            switch (type)
            {
            case UnityStructs.String:
                result = value;
                break;

            case UnityStructs.Boolean:
                result = bool.Parse(value);
                break;

            case UnityStructs.Int32:
                result = int.Parse(value);
                break;

            case UnityStructs.Single:
                result = float.Parse(value);
                break;

            case UnityStructs.Double:
                result = double.Parse(value);
                break;

            case UnityStructs.Vector2:
                result = ToVector2(value);
                break;

            case UnityStructs.Vector3:
                result = ToVector3(value);
                break;

            case UnityStructs.Vector4:
                result = ToVector4(value);
                break;

            case UnityStructs.Color:
                result = ToColor(value);
                break;

            case UnityStructs.Color32:
                result = ToColor32(value);
                break;

            case UnityStructs.Rect:
                result = ToRect(value);
                break;
            }
            return(result);
        }
示例#3
0
文件: Convert.cs 项目: GF47/GRT
        public static object GetDefaultValue(UnityStructs type)
        {
            object result = null;

            switch (type)
            {
            case UnityStructs.String:
                result = string.Empty;
                break;

            case UnityStructs.Boolean:
                result = false;
                break;

            case UnityStructs.Int32:
                result = 0;
                break;

            case UnityStructs.Single:
                result = 0f;
                break;

            case UnityStructs.Double:
                result = 0d;
                break;

            case UnityStructs.Vector2:
                result = Vector2.zero;
                break;

            case UnityStructs.Vector3:
                result = Vector3.zero;
                break;

            case UnityStructs.Vector4:
                result = Vector4.zero;
                break;

            case UnityStructs.Color:
                result = Color.black;
                break;

            case UnityStructs.Color32:
                result = (Color32)Color.black;
                break;

            case UnityStructs.Rect:
                result = new Rect(0, 0, 0, 0);
                break;
            }
            return(result);
        }
示例#4
0
文件: Convert.cs 项目: GF47/GRT
        public static Type ToType(UnityStructs type)
        {
            Type t = null;

            if (type == UnityStructs.String)
            {
                t = typeof(string);
            }
            else if (type == UnityStructs.Boolean)
            {
                t = typeof(bool);
            }
            else if (type == UnityStructs.Int32)
            {
                t = typeof(int);
            }
            else if (type == UnityStructs.Single)
            {
                t = typeof(float);
            }
            else if (type == UnityStructs.Double)
            {
                t = typeof(double);
            }
            else if (type == UnityStructs.Vector2)
            {
                t = typeof(Vector2);
            }
            else if (type == UnityStructs.Vector3)
            {
                t = typeof(Vector3);
            }
            else if (type == UnityStructs.Vector4)
            {
                t = typeof(Vector4);
            }
            else if (type == UnityStructs.Color)
            {
                t = typeof(Color);
            }
            else if (type == UnityStructs.Color32)
            {
                t = typeof(Color32);
            }
            else if (type == UnityStructs.Rect)
            {
                t = typeof(Rect);
            }

            return(t);
        }
示例#5
0
文件: Convert.cs 项目: GF47/GRT
        public static UnityStructs ToUnityStructsEnum(Type type)
        {
            UnityStructs t = UnityStructs.String;

            if (type == typeof(string))
            {
                t = UnityStructs.String;
            }
            else if (type == typeof(bool))
            {
                t = UnityStructs.Boolean;
            }
            else if (type == typeof(int))
            {
                t = UnityStructs.Int32;
            }
            else if (type == typeof(float))
            {
                t = UnityStructs.Single;
            }
            else if (type == typeof(double))
            {
                t = UnityStructs.Double;
            }
            else if (type == typeof(Vector2))
            {
                t = UnityStructs.Vector2;
            }
            else if (type == typeof(Vector3))
            {
                t = UnityStructs.Vector3;
            }
            else if (type == typeof(Vector4))
            {
                t = UnityStructs.Vector4;
            }
            else if (type == typeof(Color))
            {
                t = UnityStructs.Color;
            }
            else if (type == typeof(Color32))
            {
                t = UnityStructs.Color32;
            }
            else if (type == typeof(Rect))
            {
                t = UnityStructs.Rect;
            }

            return(t);
        }
        /// <summary>
        /// Types don't need to be annotated with any special attributes for them to be serialized
        /// A type is serialized if:
        /// - it's a primitive, enum or string
        /// - or a UnityEngine.Object
        /// - or a Unity struct
        /// - or a single-dimensional array and the element type is serializable
        /// - or an interface
        /// - or included in the 'SupportedTypes' array
        /// - it's not included in the 'NotSupportedTypes' array
        /// - it's generic and all its generic type arguments are serializable as well
        /// </summary>
        public override bool IsSerializableType(Type type)
        {
            if (type.IsPrimitive || type.IsEnum || type == typeof(string) ||
                type.IsA <UnityObject>() ||
                UnityStructs.ContainsValue(type))
            {
                return(true);
            }

            if (type.IsArray)
            {
                return(type.GetArrayRank() == 1 && IsSerializableType(type.GetElementType()));
            }

            if (type.IsInterface)
            {
                return(true);
            }

            if (NotSupportedTypes.Any(type.IsA))
            {
                return(false);
            }

            if (SupportedTypes.Any(type.IsA))
            {
                return(true);
            }

            if (type.IsGenericType)
            {
                return(type.GetGenericArguments().All(IsSerializableType));
            }

            return(true);
        }
        public bool IsSerializable(Type type)
        {
            if (IsSimpleType(type) ||
                type.IsA <UnityObject>() ||
                UnityStructs.ContainsValue(type))
            {
                return(true);
            }

            if (type.IsArray)
            {
                return(type.GetArrayRank() == 1 && IsSerializable(type.GetElementType()));
            }

            if (type.IsInterface)
            {
                return(true);
            }

            if (NotSupportedTypes.Any(type.IsA))
            {
                return(false);
            }

            if (SupportedTypes.Any(type.IsA))
            {
                return(true);
            }

            if (type.IsGenericType)
            {
                return(type.GetGenericArguments().All(IsSerializable));
            }

            return(attributes.SerializableType.IsNullOrEmpty() || attributes.SerializableType.Any(type.IsDefined));
        }
示例#8
0
文件: Convert.cs 项目: GF47/GRT
        public static UnityStructs ToUnityStructsEnum(string type)
        {
            UnityStructs t = UnityStructs.String;

            switch (type)
            {
            case StringType0:
            case StringType1:
            case StringType2:
                t = UnityStructs.String;
                break;

            case BooleanType0:
            case BooleanType1:
            case BooleanType2:
                t = UnityStructs.Boolean;
                break;

            case IntType0:
            case IntType1:
            case IntType2:
                t = UnityStructs.Int32;
                break;

            case FloatType0:
            case FloatType1:
            case FloatType2:
                t = UnityStructs.Single;
                break;

            case DoubleType0:
            case DoubleType1:
            case DoubleType2:
                t = UnityStructs.Double;
                break;

            case Vector2Type0:
            case Vector2Type1:
            case Vector2Type2:
                t = UnityStructs.Vector2;
                break;

            case Vector3Type0:
            case Vector3Type1:
            case Vector3Type2:
                t = UnityStructs.Vector3;
                break;

            case Vector4Type0:
            case Vector4Type1:
            case Vector4Type2:
                t = UnityStructs.Vector4;
                break;

            case ColorType0:
            case ColorType1:
            case ColorType2:
                t = UnityStructs.Color;
                break;

            case Color32Type0:
            case Color32Type1:
            case Color32Type2:
                t = UnityStructs.Color32;
                break;

            case RectType0:
            case RectType1:
            case RectType2:
                t = UnityStructs.Rect;
                break;
            }
            return(t);
        }