Program Listing for File Transform.hpp

Return to documentation for file (engine/include/Cacao/Transform.hpp)

#pragma once

#include "glm/vec3.hpp"
#include "glm/mat4x4.hpp"

#include "DllHelper.hpp"

namespace Cacao {
    class CACAO_API Transform {
      public:
        Transform(glm::vec3 position, glm::vec3 rotation, glm::vec3 scale)
          : pos(position), rot(rotation), scale(scale), transMat(1.0) {
            RecalculateTransformationMatrix();
        }

        glm::vec3 GetPosition() const {
            return pos;
        }

        glm::vec3 GetRotation() const {
            return rot;
        }

        glm::vec3 GetScale() const {
            return scale;
        }

        void SetPosition(glm::vec3 newPos) {
            pos = newPos;
            RecalculateTransformationMatrix();
        }

        void SetRotation(glm::vec3 newRot) {
            rot = newRot;
            RecalculateTransformationMatrix();
        }

        void SetScale(glm::vec3 newScale) {
            scale = newScale;
            RecalculateTransformationMatrix();
        }

        glm::mat4 GetTransformationMatrix() const {
            return transMat;
        }

      private:
        glm::vec3 pos, rot, scale;

        glm::mat4 transMat;

        void RecalculateTransformationMatrix();
    };
}