Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class EventDispatcher
- {
- public:
- EventDispatcher() = default;
- template<class TEvent>
- void AddEventListener(EventListener<TEvent>* listener)
- {
- m_Callbacks.emplace(typeid(TEvent), (void*)listener);
- }
- template<class TEvent>
- void Dispatch(TEvent& evnt)
- {
- auto listenerIt = m_Callbacks.find(typeid(TEvent));
- if (listenerIt != m_Callbacks.end())
- {
- EventListener<TEvent>* listener = static_cast<EventListener<TEvent>*>(listenerIt->second);
- (*listener)(evnt);
- }
- }
- private:
- std::unordered_map<std::type_index, void*> m_Callbacks;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement