public Mat4(Vec4 a, Vec4 b, Vec4 c, Vec4 d) { this.x1 = a.x; this.y1 = a.y; this.z1 = a.z; this.w1 = a.w; this.x2 = b.x; this.y2 = b.y; this.z2 = b.z; this.w2 = a.w; this.x3 = c.x; this.y3 = c.y; this.z3 = c.z; this.w3 = a.w; this.x4 = d.x; this.y4 = d.y; this.z4 = d.z; this.w4 = d.w; }
[DllImport(DLL_NAME, EntryPoint = "Vec4Lerp")] public static extern Vec4 Lerp(Vec4 a, Vec4 b, float t);
[DllImport(DLL_NAME, EntryPoint = "Vec4Dot")] public static extern Vec4 Dot(Vec4 a, Vec4 b);
[DllImport(DLL_NAME, EntryPoint = "Vec4DivideF")] private static extern Vec4 DivideF(Vec4 a, float v);
[DllImport(DLL_NAME, EntryPoint = "Vec4Normalize")] public static extern Vec4 Normalize(Vec4 v);
[DllImport(DLL_NAME, EntryPoint = "Vec4MultiplyF")] private static extern Vec4 MultiplyF(Vec4 a, float v);
[DllImport(DLL_NAME, EntryPoint = "Vec4Divide")] private static extern Vec4 Divide(Vec4 a, Vec4 b);
[DllImport(DLL_NAME, EntryPoint = "Vec4Multiply")] private static extern Vec4 Multiply(Vec4 a, Vec4 b);
[DllImport(DLL_NAME, EntryPoint = "Vec4Subtract")] private static extern Vec4 Subtract(Vec4 a, Vec4 b);
[DllImport(DLL_NAME, EntryPoint = "Vec4Magnetude")] public static extern float Magnetude(Vec4 v);