#pragma once

#include <any>

namespace VE
{
  struct event
  {
    event(std::any type, std::any data, int id) : m_type{ type }, m_data{ data }, m_id { id } {}
    ~event() = default;

    std::any m_type;
    std::any m_data;
    int m_id;
  };

  struct emitter
  {
    virtual ~emitter();
    virtual void on_event(event e) = 0;
    virtual void on_attach() = 0;
  };
}
