#include "EventManager.hpp" using namespace Bloom; void EventManager::registerListener(std::shared_ptr listener) { auto registerListenersLock = std::unique_lock(this->registerListenerMutex); size_t newId = this->registeredListeners.size() + 1; this->registeredListeners.insert(std::pair>(newId, listener)); listener->setId(newId); } void EventManager::deregisterListener(size_t listenerId) { auto registerListenersLock = std::unique_lock(this->registerListenerMutex); this->registeredListeners.erase(listenerId); } void EventManager::triggerEvent(std::shared_ptr event) { auto registerListenersLock = std::unique_lock(this->registerListenerMutex); for(auto const& [listenerId, listener] : this->registeredListeners) { auto registeredEventTypes = listener->getRegisteredEventTypeNames(); if (registeredEventTypes.find(event->getName()) != registeredEventTypes.end()) { listener->registerEvent(event); } } }