Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.59 KB | None | 0 0
  1. class EventDispatcher
  2.     {
  3.     public:
  4.  
  5.         EventDispatcher() = default;
  6.  
  7.         template<class TEvent>
  8.         void AddEventListener(EventListener<TEvent>* listener)
  9.         {
  10.             m_Callbacks.emplace(typeid(TEvent), (void*)listener);
  11.         }
  12.  
  13.         template<class TEvent>
  14.         void Dispatch(TEvent& evnt)
  15.         {
  16.             auto listenerIt = m_Callbacks.find(typeid(TEvent));
  17.             if (listenerIt != m_Callbacks.end())
  18.             {
  19.                 EventListener<TEvent>* listener = static_cast<EventListener<TEvent>*>(listenerIt->second);
  20.                 (*listener)(evnt);
  21.             }
  22.         }
  23.  
  24.     private:
  25.  
  26.         std::unordered_map<std::type_index, void*> m_Callbacks;
  27.  
  28.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement