aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2018-11-17 23:21:37 -0800
committerChris Robinson <[email protected]>2018-11-17 23:21:37 -0800
commite79d9bdd1a6aa6d6d9852bf5a380a8cd01cbc315 (patch)
treed0c7be1efda1c2c72f035d5b8be5e942d70b8908 /common
parentfa3c34268dd7d9bc380ecd19aedb28924d29b295 (diff)
Move the vector and matrix declarations to a separate header
Diffstat (limited to 'common')
-rw-r--r--common/vecmat.cpp12
-rw-r--r--common/vecmat.h46
2 files changed, 58 insertions, 0 deletions
diff --git a/common/vecmat.cpp b/common/vecmat.cpp
new file mode 100644
index 00000000..ccb9ad9f
--- /dev/null
+++ b/common/vecmat.cpp
@@ -0,0 +1,12 @@
+
+#include "config.h"
+
+#include "vecmat.h"
+
+
+const aluMatrixf aluMatrixf::Identity{{
+ { 1.0f, 0.0f, 0.0f, 0.0f },
+ { 0.0f, 1.0f, 0.0f, 0.0f },
+ { 0.0f, 0.0f, 1.0f, 0.0f },
+ { 0.0f, 0.0f, 0.0f, 1.0f },
+}};
diff --git a/common/vecmat.h b/common/vecmat.h
new file mode 100644
index 00000000..0a60cb9e
--- /dev/null
+++ b/common/vecmat.h
@@ -0,0 +1,46 @@
+#ifndef COMMON_VECMAT_H
+#define COMMON_VECMAT_H
+
+#include "AL/al.h"
+
+
+struct aluVector {
+ alignas(16) ALfloat v[4];
+};
+
+inline void aluVectorSet(aluVector *vector, ALfloat x, ALfloat y, ALfloat z, ALfloat w)
+{
+ vector->v[0] = x;
+ vector->v[1] = y;
+ vector->v[2] = z;
+ vector->v[3] = w;
+}
+
+
+struct aluMatrixf {
+ alignas(16) ALfloat m[4][4];
+
+ static const aluMatrixf Identity;
+};
+
+inline void aluMatrixfSetRow(aluMatrixf *matrix, ALuint row,
+ ALfloat m0, ALfloat m1, ALfloat m2, ALfloat m3)
+{
+ matrix->m[row][0] = m0;
+ matrix->m[row][1] = m1;
+ matrix->m[row][2] = m2;
+ matrix->m[row][3] = m3;
+}
+
+inline void aluMatrixfSet(aluMatrixf *matrix, ALfloat m00, ALfloat m01, ALfloat m02, ALfloat m03,
+ ALfloat m10, ALfloat m11, ALfloat m12, ALfloat m13,
+ ALfloat m20, ALfloat m21, ALfloat m22, ALfloat m23,
+ ALfloat m30, ALfloat m31, ALfloat m32, ALfloat m33)
+{
+ aluMatrixfSetRow(matrix, 0, m00, m01, m02, m03);
+ aluMatrixfSetRow(matrix, 1, m10, m11, m12, m13);
+ aluMatrixfSetRow(matrix, 2, m20, m21, m22, m23);
+ aluMatrixfSetRow(matrix, 3, m30, m31, m32, m33);
+}
+
+#endif /* COMMON_VECMAT_H */