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