#pragma once

#include "event/event.hpp"
#include "gui/flags.hpp"

namespace VE 
{
  class layer : public flags
  {
    using time = time::timestep<float>;

    public:
      layer() = default;
      virtual ~layer() = default; 

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

    public:
      virtual void on_attach() {};
      virtual void render() {};
      virtual void update() {};
      virtual void on_event(event e) {};

    protected:
      event_fn<event> execute;
  };
}

