summaryrefslogtreecommitdiff
path: root/engine-ocean/Graphics/modeltransform.cpp
diff options
context:
space:
mode:
authorjjesswan <jessica_wan@brown.edu>2024-04-22 21:56:26 -0400
committerjjesswan <jessica_wan@brown.edu>2024-04-22 21:56:26 -0400
commita556b45abf18f1bd509daaf63b66b7d55e9fd291 (patch)
treebc9b8a2d184c12aee236e7f9f276a34b84ca552d /engine-ocean/Graphics/modeltransform.cpp
parentcd7c76017a12bb548036571c1ff13e551369d06d (diff)
add engine version
Diffstat (limited to 'engine-ocean/Graphics/modeltransform.cpp')
-rw-r--r--engine-ocean/Graphics/modeltransform.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/engine-ocean/Graphics/modeltransform.cpp b/engine-ocean/Graphics/modeltransform.cpp
new file mode 100644
index 0000000..895f64d
--- /dev/null
+++ b/engine-ocean/Graphics/modeltransform.cpp
@@ -0,0 +1,90 @@
+#include "modeltransform.h"
+#include <iostream>
+
+ModelTransform::ModelTransform():
+ m_pos(glm::vec3(0)),
+ m_scale(glm::vec3(1)),
+ m_rotation(glm::mat4(1))
+{
+
+}
+
+ModelTransform::~ModelTransform(){
+
+}
+
+void ModelTransform::setPos(glm::vec3 pos){
+ m_pos = pos;
+}
+
+void ModelTransform::translate(glm::vec3 delta) {
+ m_pos += delta;
+}
+
+glm::vec3 ModelTransform::getPos() {
+ return m_pos;
+}
+
+void ModelTransform::setScale(glm::vec3 scale) {
+ m_scale = scale;
+}
+
+void ModelTransform::setScale(float scale) {
+ m_scale = glm::vec3(scale);
+}
+
+void ModelTransform::scale(glm::vec3 scale) {
+ m_scale *= scale;
+}
+
+void ModelTransform::scale(float scale) {
+ m_scale *= scale;
+}
+
+glm::vec3 ModelTransform::getScale() {
+ return m_scale;
+}
+
+void ModelTransform::setRotation(float angle, glm::vec3 axis) {
+ m_rotation = glm::rotate(glm::mat4(1), angle, axis);
+}
+
+void ModelTransform::setRotation(glm::mat4 r) {
+ m_rotation = r;
+}
+
+void ModelTransform::rotate(float angle, glm::vec3 axis) {
+ m_rotation = glm::rotate(m_rotation, angle, axis);
+}
+
+void ModelTransform::rotate(glm::mat4 r) {
+ m_rotation = r * m_rotation;
+}
+
+glm::mat4 ModelTransform::getRotation() {
+ return m_rotation;
+}
+
+//float ModelTransform::getYRotationAngle(){
+// glm::mat4 rotMat = getRotation();
+// float ry0 = rotMat[0][2];
+// float ry1 = rotMat[1][2];
+// float ry2 = rotMat[2][2];
+
+// float angley = std::atan2(-ry0, pow((pow(ry1, 2) + pow(ry2,2)), .5));
+// return angley;
+//}
+
+glm::mat4 ModelTransform::getModelMatrix() {
+ glm::mat4 model = glm::mat4(1);
+ model = glm::translate(model, m_pos);
+ model = model * m_rotation;
+ model = glm::scale(model, m_scale);
+ return model;
+}
+
+void ModelTransform::clear(){
+ m_pos = glm::vec3(0, 0, 0);
+ m_scale = glm::vec3(1, 1, 1);
+ m_rotation = glm::mat4(1);
+}