#ifndef LAYER_HPP
#define LAYER_HPP

#include "events/event.hpp"

namespace OpenEngine {
    class Layer
    {
        public:
            Layer(const std::string& name = "layer")
                : debug_name(name)
            {
            };
            virtual ~Layer() = default;

            virtual void OnAttach() {};
            virtual void OnDetach() {};
            virtual void OnUpdate() {};
            virtual void OnImGuiRender() {};
            virtual void OnEvent(Event& event) {};

            inline const std::string& GetName() const { return debug_name; };

        protected:
            std::string debug_name = "";
    };
}

#endif // LAYER_HPP
