1 module re.util.newtonphys; 2 3 version (physics) { 4 import newton = bindbc.newton.types; 5 import re.math; 6 7 struct newton_vector { 8 align(4): 9 newton.dFloat x = 0; 10 newton.dFloat y = 0; 11 newton.dFloat z = 0; 12 newton.dFloat w = 0; 13 } 14 15 struct newton_matrix { 16 align(4): 17 newton_vector front; 18 newton_vector up; 19 newton_vector right; 20 newton_vector posit; 21 } 22 23 pragma(inline, true) { 24 // static newton_vector convert_vec3(const(Vector3) vec) { 25 // return newton_vector(vec.x, vec.y, vec.z, 1.0); 26 // } 27 28 // static Vector3 convert_vec3(const(newton_vector) vec) { 29 // return Vector3(vec.x, vec.y, vec.z); 30 // } 31 32 static Vector4 convert_vec3(const(Vector3) vec) { 33 return Vector4(vec.x, vec.y, vec.z, 1.0); 34 } 35 36 static Vector3 convert_vec3(const(Vector4) vec) { 37 return Vector3(vec.x, vec.y, vec.z); 38 } 39 40 static Quaternion convert_quat(const(Quaternion) quat) { 41 return quat; 42 } 43 44 // static Quaternion convert_quat(const(dl_quat.Quaternionf) quat) { 45 // auto vec = quat.vectorof[]; 46 // return Quaternion(vec[0], vec[1], vec[2], vec[3]); 47 // } 48 49 // static dl_quat.Quaternionf convert_quat(const(Quaternion) quat) { 50 // return dl_quat.Quaternionf(quat.x, quat.y, quat.z, quat.w); 51 // } 52 53 // static dl_mat.Matrix4x4f convert_mat(const(Matrix) mat) { 54 // return dl_mat.Matrix4x4f([ 55 // mat.m0, mat.m4, mat.m8, mat.m12, mat.m1, mat.m5, mat.m9, 56 // mat.m13, mat.m2, mat.m6, mat.m10, mat.m14, mat.m3, mat.m7, 57 // mat.m11, mat.m15 58 // ]); 59 // } 60 } 61 }