#ifndef SHADER_MATRIX_H #define SHADER_MATRIX_H #include "gaming-core/math/MatrixStack.h" #include "gaming-core/math/Quaternion.h" #include "gaming-core/math/Vector.h" #include "gaming-core/rendering/Shader.h" class ShaderMatrix final { public: ShaderMatrix(Shader& shader, MatrixStack<16>& stack, Matrix& view); void pop(); void push(); ShaderMatrix& update(); ShaderMatrix& update(const Vector3& pos, const Quaternion& rotation); ShaderMatrix& scale(float sx, float sy, float sz); ShaderMatrix& scale(float s); ShaderMatrix& translate(float tx, float ty, float tz); ShaderMatrix& translateX(float tx); ShaderMatrix& translateY(float ty); ShaderMatrix& translateZ(float tz); ShaderMatrix& translateTo(float tx, float ty, float tz); ShaderMatrix& rotateX(float degrees); ShaderMatrix& rotateY(float degrees); ShaderMatrix& rotateZ(float degrees); ShaderMatrix& identity(); private: Shader& shader; MatrixStack<16>& stack; Matrix& view; }; #endif