9#include <unordered_map>
30 using RawCallback = std::function<void(
Event&)>;
35 std::unordered_map<std::type_index, std::vector<RawCallback>> mListeners;
39 template<
typename EventType>
48 template<
typename EventType>
50 auto& listeners = mListeners[
typeid(EventType)];
51 listeners.push_back([cb = std::move(callback)](
Event& e) {
52 cb(
static_cast<EventType&
>(e));
62 template<
typename EventType>
63 void Emit(EventType* event)
const {
64 auto it = mListeners.find(
typeid(EventType));
65 if (it != mListeners.end()) {
66 for (
const auto& listener : it->second) {
EventDispatcher enregistre des listeners, émet des évènements, et appelle des callbacks.
Definition event.hpp:27
void Subscribe(EventCallback< EventType > callback)
Permet d'enregistrer un callback à appeler lors de l'émission d'un évènement de type EventType.
Definition event.hpp:49
void Emit(EventType *event) const
Permet d'émettre un évènement de type EventType.
Definition event.hpp:63
std::function< void(EventType &)> EventCallback
Spécifie un nom pour les fonctions de callbacks typés (par event)
Definition event.hpp:40
Classe Event dont tous les évènements devront hériter dans le système. Permet simplement de rendre le...
Definition event.hpp:19