#include #include namespace hex { std::vector EventManager::post(Events eventType, const std::any &userData) { std::vector results; for (auto &handler : SharedData::eventHandlers) if (eventType == handler.eventType) results.push_back(handler.callback(userData)); return results; } void EventManager::subscribe(Events eventType, void *owner, std::function callback) { for (auto &handler : SharedData::eventHandlers) if (eventType == handler.eventType && owner == handler.owner) return; SharedData::eventHandlers.push_back(EventHandler { owner, eventType, callback }); } void EventManager::unsubscribe(Events eventType, void *sender) { std::erase_if(SharedData::eventHandlers, [&eventType, &sender](EventHandler handler) { return eventType == handler.eventType && sender == handler.owner; }); } }