#pragma once

#include "vertex_engine/event/event.hpp"
#include "vertex_engine/utils/using.hpp"

namespace VE 
{
  class layer
  {
    public:
      layer() = default;
      virtual ~layer() = default; 

      layer(const layer&) = delete;
      void operator=(const layer&) = delete;

    public:
      virtual void on_attach() {};
      virtual void on_detach() {};
      virtual void render() {};
      virtual void update() {};

    protected:
      event_fn<event> execute;
  };
}

