#ifndef LAYER_STACK_HPP
#define LAYER_STACK_HPP

#include "core.hpp"
#include "layer.hpp"

#include <vector>

namespace OpenEngine {
    class OE_API LayerStack
    {
        public:
            LayerStack();
            ~LayerStack();

            void PushLayer(Layer* layer);
            void PopLayer(Layer* layer);
            void PushOverlay(Layer* overlay);
            void PopOverlay(Layer* overlay);

            std::vector<Layer*>::iterator begin() { return layers.begin(); }
            std::vector<Layer*>::iterator end() { return layers.end(); }
        private:
            std::vector<Layer*> layers;
            unsigned int layer_insert_index = 0;
    };
}

#endif // LAYER_STACK_HPP
