From a556b45abf18f1bd509daaf63b66b7d55e9fd291 Mon Sep 17 00:00:00 2001 From: jjesswan Date: Mon, 22 Apr 2024 21:56:26 -0400 Subject: add engine version --- engine-ocean/Graphics/modeltransform.cpp | 90 ++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 engine-ocean/Graphics/modeltransform.cpp (limited to 'engine-ocean/Graphics/modeltransform.cpp') 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 + +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); +} -- cgit v1.2.3-70-g09d2