|
@@ -16,34 +16,57 @@ public static class ConversionTable
|
|
|
{
|
|
|
typeof(double), [
|
|
|
(typeof(int), new TypeConverter<double, int>(DoubleToInt)),
|
|
|
+ (typeof(float), new TypeConverter<double, float>(d => (float)d)),
|
|
|
(typeof(VecD), new TypeConverter<double, VecD>(DoubleToVecD)),
|
|
|
- (typeof(VecI), new TypeConverter<double, VecI>(DoubleToVecI))
|
|
|
+ (typeof(VecI), new TypeConverter<double, VecI>(DoubleToVecI)),
|
|
|
+ (typeof(Vec3D), new TypeConverter<double, Vec3D>(d => new Vec3D(d, d, d))),
|
|
|
]
|
|
|
},
|
|
|
{
|
|
|
typeof(int), [
|
|
|
(typeof(double), new TypeConverter<int, double>(ConvertIntToDouble)),
|
|
|
+ (typeof(float), new TypeConverter<int, float>(i => (float)i)),
|
|
|
(typeof(VecI), new TypeConverter<int, VecI>(IntToVecI)),
|
|
|
(typeof(VecD), new TypeConverter<int, VecD>(IntToVecD)),
|
|
|
+ (typeof(Vec3D), new TypeConverter<int, Vec3D>(i => new Vec3D(i, i, i))),
|
|
|
]
|
|
|
},
|
|
|
{
|
|
|
typeof(VecD), [
|
|
|
(typeof(double), new TypeConverter<VecD, double>(VecDToDouble)),
|
|
|
(typeof(int), new TypeConverter<VecD, int>(VecDToInt)),
|
|
|
+ (typeof(float), new TypeConverter<VecD, float>(v => (float)v.X)),
|
|
|
(typeof(VecI), new TypeConverter<VecD, VecI>(VecDToVecI)),
|
|
|
+ (typeof(Vec3D), new TypeConverter<VecD, Vec3D>(v => new Vec3D(v.X, v.Y, v.Y)))
|
|
|
]
|
|
|
},
|
|
|
{
|
|
|
typeof(VecI), [
|
|
|
(typeof(double), new TypeConverter<VecI, double>(VecIToDouble)),
|
|
|
(typeof(int), new TypeConverter<VecI, int>(VecIToInt)),
|
|
|
- (typeof(VecD), new TypeConverter<VecI, VecD>(VecIToVecD))
|
|
|
+ (typeof(float), new TypeConverter<VecI, float>(v => v.X)),
|
|
|
+ (typeof(VecD), new TypeConverter<VecI, VecD>(VecIToVecD)),
|
|
|
+ (typeof(Vec3D), new TypeConverter<VecI, Vec3D>(v => new Vec3D(v.X, v.Y, v.Y)))
|
|
|
]
|
|
|
},
|
|
|
{
|
|
|
typeof(Color), [
|
|
|
(typeof(Paintable), new TypeConverter<Color, Paintable>(c => new ColorPaintable(c))),
|
|
|
+ (typeof(VecD), new TypeConverter<Color, VecD>(c => new VecD(c.R, c.G))),
|
|
|
+ (typeof(VecI), new TypeConverter<Color, VecI>(c => new VecI(c.R, c.G))),
|
|
|
+ (typeof(Vec3D), new TypeConverter<Color, Vec3D>(c => new Vec3D(c.R, c.G, c.B))),
|
|
|
+ (typeof(double), new TypeConverter<Color, double>(c => c.R)),
|
|
|
+ (typeof(int), new TypeConverter<Color, int>(c => c.R)),
|
|
|
+ (typeof(float), new TypeConverter<Color, float>(c => c.R)),
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ typeof(Vec3D),[
|
|
|
+ (typeof(double), new TypeConverter<Vec3D, double>(v => v.X)),
|
|
|
+ (typeof(int), new TypeConverter<Vec3D, int>(v => (int)v.X)),
|
|
|
+ (typeof(VecD), new TypeConverter<Vec3D, VecD>(v => new VecD(v.X, v.Y))),
|
|
|
+ (typeof(VecI), new TypeConverter<Vec3D, VecI>(v => new VecI((int)v.X, (int)v.Y))),
|
|
|
+ (typeof(Color), new TypeConverter<Vec3D, Color>(v => new Color((byte)Math.Clamp(v.X, 0, 255), (byte)Math.Clamp(v.Y, 0, 255), (byte)Math.Clamp(v.Z, 0, 255)))),
|
|
|
]
|
|
|
}
|
|
|
};
|