#ifndef LAYER_HPP
#define LAYER_HPP

#include "events/event.hpp"
#include "core.hpp"

namespace OpenEngine {
    class OE_API Layer
    {
        public:
            Layer(const std::string& name = "layer");
            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
