/// <inheritdoc/> public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value is Color) { var color = (Color)value; return(color.ToColor3()); } if (value is Color4) { var color = (Color4)value; return(color.ToColor3()); } var str = value as string; if (str != null) { // First try to convert using StringToRgba if (ColorExtensions.CanConvertStringToRgba(str)) { var colorValue = ColorExtensions.StringToRgba(str); return(new Color3(colorValue)); } // If we can't, use the default ConvertFromString method. return(ConvertFromString <Color3, float>(context, culture, value)); } return(base.ConvertFrom(context, culture, value)); }