#pragma once #include #include #include #include "Events/Events.hpp" #include "EventListener.hpp" namespace Bloom { class EventManager { private: /** * A mapping of listener IDs to registered listeners. Each registered listener is given an interger ID. */ std::map> registeredListeners; std::mutex registerListenerMutex; public: /** * Generates a new registered listener. * * @param listenerName */ void registerListener(std::shared_ptr listener); void deregisterListener(size_t listenerId); void triggerEvent(GenericEventPointer event); }; }