public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value.GetType() == typeof(string) && supportStringConvert) { float[] values = MathTypeConverter.ConvertStringToValues(context, culture, (string)value); return(new Vector3(values[0], values[1], values[2])); } return(base.ConvertFrom(context, culture, value)); }
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { Vector3 vector = (Vector3)value; if (destinationType == typeof(string) && supportStringConvert) { float[] values = new float[] { vector.X, vector.Y, vector.Z }; return(MathTypeConverter.ConvertValuesToString(context, culture, values)); } else if (destinationType == typeof(InstanceDescriptor)) { MemberInfo constructorInfo = typeof(Vector3).GetConstructor(new Type[] { typeof(float), typeof(float), typeof(float) }); object[] parameters = new object[] { vector.X, vector.Y, vector.Z }; return(new InstanceDescriptor(constructorInfo, parameters)); } return(base.ConvertTo(context, culture, value, destinationType)); }