public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == null) { throw new ArgumentNullException("destinationType"); } if (destinationType == typeof(string) && value is Vector2) { Vector2 vector = (Vector2)value; return(MathTypeConverter.ConvertFromValues <float>(context, culture, new float[] { vector.X, vector.Y })); } if (destinationType == typeof(InstanceDescriptor) && value is Vector2) { Vector2 vector2 = (Vector2)value; ConstructorInfo constructor = typeof(Vector2).GetConstructor(new Type[] { typeof(float), typeof(float) }); if (constructor != null) { return(new InstanceDescriptor(constructor, new object[] { vector2.X, vector2.Y })); } } return(base.ConvertTo(context, culture, value, destinationType)); }
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { float[] array = MathTypeConverter.ConvertToValues <float>(context, culture, value, 2, new string[] { "X", "Y" }); if (array != null) { return(new Vector2(array[0], array[1])); } return(base.ConvertFrom(context, culture, value)); }