#pragma once

#include <vector>
#include "Matrix4x4.hpp"

namespace TSE
{
    class TransformationStack
    {
        private:
        std::vector<Matrix4x4> stack;

        public:
        /// @brief generates an empty transformation stack, based on an identity matrix
        TransformationStack();
        /// @brief gets the current value of the stack
        /// @return the current value
        const Matrix4x4& Top() const;
        /// @brief pusches a new value on to the stack
        /// @param matrix the value to be pusched
        void Push(const Matrix4x4& matrix);
        /// @brief pops the last value off the stack
        void Pop();
    };
} // namespace TSE
