Browse Source

Added Vec3D to conversion table

Krzysztof Krysiński 2 months ago
parent
commit
9a3d10cbbd

+ 18 - 2
src/PixiEditor.ChangeableDocument/Changes/NodeGraph/ConversionTable.cs

@@ -17,7 +17,8 @@ public static class ConversionTable
                 typeof(double), [
                     (typeof(int), new TypeConverter<double, int>(DoubleToInt)),
                     (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))),
                 ]
             },
             {
@@ -25,6 +26,7 @@ public static class ConversionTable
                     (typeof(double), new TypeConverter<int, double>(ConvertIntToDouble)),
                     (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))),
                 ]
             },
             {
@@ -32,18 +34,32 @@ public static class ConversionTable
                     (typeof(double), new TypeConverter<VecD, double>(VecDToDouble)),
                     (typeof(int), new TypeConverter<VecD, int>(VecDToInt)),
                     (typeof(VecI), new TypeConverter<VecD, VecI>(VecDToVecI)),
+                    (typeof(Vec3D), new TypeConverter<VecD, Vec3D>(v => new Vec3D(v.X, v.Y, 0)))
                 ]
             },
             {
                 typeof(VecI), [
                     (typeof(double), new TypeConverter<VecI, double>(VecIToDouble)),
                     (typeof(int), new TypeConverter<VecI, int>(VecIToInt)),
-                    (typeof(VecD), new TypeConverter<VecI, VecD>(VecIToVecD))
+                    (typeof(VecD), new TypeConverter<VecI, VecD>(VecIToVecD)),
+                    (typeof(Vec3D), new TypeConverter<VecI, Vec3D>(v => new Vec3D(v.X, v.Y, 0)))
                 ]
             },
             {
                 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(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)))),
                 ]
             }
         };